#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/gpio.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/iopoll.h>
#include <linux/kernel.h>
#include <linux/of_platform.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/resource.h>
#include <linux/types.h>
#include "pcie-designware.h"
#include "../../pci.h"
struct visconti_pcie { … };
#define PCIE_UL_REG_S_PCIE_MODE …
#define PCIE_UL_REG_S_PCIE_MODE_EP …
#define PCIE_UL_REG_S_PCIE_MODE_RC …
#define PCIE_UL_REG_S_PERSTN_CTRL …
#define PCIE_UL_IOM_PCIE_PERSTN_I_EN …
#define PCIE_UL_DIRECT_PERSTN_EN …
#define PCIE_UL_PERSTN_OUT …
#define PCIE_UL_DIRECT_PERSTN …
#define PCIE_UL_REG_S_PERSTN_CTRL_INIT …
#define PCIE_UL_REG_S_PHY_INIT_02 …
#define PCIE_UL_PHY0_SRAM_EXT_LD_DONE …
#define PCIE_UL_REG_S_PHY_INIT_03 …
#define PCIE_UL_PHY0_SRAM_INIT_DONE …
#define PCIE_UL_REG_S_INT_EVENT_MASK1 …
#define PCIE_UL_CFG_PME_INT …
#define PCIE_UL_CFG_LINK_EQ_REQ_INT …
#define PCIE_UL_EDMA_INT0 …
#define PCIE_UL_EDMA_INT1 …
#define PCIE_UL_EDMA_INT2 …
#define PCIE_UL_EDMA_INT3 …
#define PCIE_UL_S_INT_EVENT_MASK1_ALL …
#define PCIE_UL_REG_S_SB_MON …
#define PCIE_UL_REG_S_SIG_MON …
#define PCIE_UL_CORE_RST_N_MON …
#define PCIE_UL_REG_V_SII_DBG_00 …
#define PCIE_UL_REG_V_SII_GEN_CTRL_01 …
#define PCIE_UL_APP_LTSSM_ENABLE …
#define PCIE_UL_REG_V_PHY_ST_00 …
#define PCIE_UL_SMLH_LINK_UP …
#define PCIE_UL_REG_V_PHY_ST_02 …
#define PCIE_UL_S_DETECT_ACT …
#define PCIE_UL_S_L0 …
#define PISMU_CKON_PCIE …
#define PISMU_CKON_PCIE_AUX_CLK …
#define PISMU_CKON_PCIE_MSTR_ACLK …
#define PISMU_RSOFF_PCIE …
#define PISMU_RSOFF_PCIE_ULREG_RST_N …
#define PISMU_RSOFF_PCIE_PWR_UP_RST_N …
#define PCIE_MPU_REG_MP_EN …
#define MPU_MP_EN_DISABLE …
static void visconti_ulreg_writel(struct visconti_pcie *pcie, u32 val, u32 reg)
{ … }
static u32 visconti_ulreg_readl(struct visconti_pcie *pcie, u32 reg)
{ … }
static void visconti_smu_writel(struct visconti_pcie *pcie, u32 val, u32 reg)
{ … }
static void visconti_mpu_writel(struct visconti_pcie *pcie, u32 val, u32 reg)
{ … }
static u32 visconti_mpu_readl(struct visconti_pcie *pcie, u32 reg)
{ … }
static int visconti_pcie_link_up(struct dw_pcie *pci)
{ … }
static int visconti_pcie_start_link(struct dw_pcie *pci)
{ … }
static void visconti_pcie_stop_link(struct dw_pcie *pci)
{ … }
static u64 visconti_pcie_cpu_addr_fixup(struct dw_pcie *pci, u64 cpu_addr)
{ … }
static const struct dw_pcie_ops dw_pcie_ops = …;
static int visconti_pcie_host_init(struct dw_pcie_rp *pp)
{ … }
static const struct dw_pcie_host_ops visconti_pcie_host_ops = …;
static int visconti_get_resources(struct platform_device *pdev,
struct visconti_pcie *pcie)
{ … }
static int visconti_add_pcie_port(struct visconti_pcie *pcie,
struct platform_device *pdev)
{ … }
static int visconti_pcie_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id visconti_pcie_match[] = …;
static struct platform_driver visconti_pcie_driver = …;
builtin_platform_driver(…) …;