#include <linux/bitops.h>
#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/iopoll.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/of_irq.h>
#include <linux/pci.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/reset.h>
#include "pcie-designware.h"
#define PCL_PINCTRL0 …
#define PCL_PERST_PLDN_REGEN …
#define PCL_PERST_NOE_REGEN …
#define PCL_PERST_OUT_REGEN …
#define PCL_PERST_PLDN_REGVAL …
#define PCL_PERST_NOE_REGVAL …
#define PCL_PERST_OUT_REGVAL …
#define PCL_PIPEMON …
#define PCL_PCLK_ALIVE …
#define PCL_MODE …
#define PCL_MODE_REGEN …
#define PCL_MODE_REGVAL …
#define PCL_APP_READY_CTRL …
#define PCL_APP_LTSSM_ENABLE …
#define PCL_APP_PM0 …
#define PCL_SYS_AUX_PWR_DET …
#define PCL_RCV_INT …
#define PCL_RCV_INT_ALL_ENABLE …
#define PCL_CFG_BW_MGT_STATUS …
#define PCL_CFG_LINK_AUTO_BW_STATUS …
#define PCL_CFG_AER_RC_ERR_MSI_STATUS …
#define PCL_CFG_PME_MSI_STATUS …
#define PCL_RCV_INTX …
#define PCL_RCV_INTX_ALL_ENABLE …
#define PCL_RCV_INTX_ALL_MASK …
#define PCL_RCV_INTX_MASK_SHIFT …
#define PCL_RCV_INTX_ALL_STATUS …
#define PCL_RCV_INTX_STATUS_SHIFT …
#define PCL_STATUS_LINK …
#define PCL_RDLH_LINK_UP …
#define PCL_XMLH_LINK_UP …
struct uniphier_pcie { … };
#define to_uniphier_pcie(x) …
static void uniphier_pcie_ltssm_enable(struct uniphier_pcie *pcie,
bool enable)
{ … }
static void uniphier_pcie_init_rc(struct uniphier_pcie *pcie)
{ … }
static int uniphier_pcie_wait_rc(struct uniphier_pcie *pcie)
{ … }
static int uniphier_pcie_link_up(struct dw_pcie *pci)
{ … }
static int uniphier_pcie_start_link(struct dw_pcie *pci)
{ … }
static void uniphier_pcie_stop_link(struct dw_pcie *pci)
{ … }
static void uniphier_pcie_irq_enable(struct uniphier_pcie *pcie)
{ … }
static void uniphier_pcie_irq_mask(struct irq_data *d)
{ … }
static void uniphier_pcie_irq_unmask(struct irq_data *d)
{ … }
static struct irq_chip uniphier_pcie_irq_chip = …;
static int uniphier_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
irq_hw_number_t hwirq)
{ … }
static const struct irq_domain_ops uniphier_intx_domain_ops = …;
static void uniphier_pcie_irq_handler(struct irq_desc *desc)
{ … }
static int uniphier_pcie_config_intx_irq(struct dw_pcie_rp *pp)
{ … }
static int uniphier_pcie_host_init(struct dw_pcie_rp *pp)
{ … }
static const struct dw_pcie_host_ops uniphier_pcie_host_ops = …;
static int uniphier_pcie_host_enable(struct uniphier_pcie *pcie)
{ … }
static const struct dw_pcie_ops dw_pcie_ops = …;
static int uniphier_pcie_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id uniphier_pcie_match[] = …;
static struct platform_driver uniphier_pcie_driver = …;
builtin_platform_driver(…) …;