#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/phy/phy.h>
#include <linux/regulator/consumer.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include "pcie-designware.h"
#define to_exynos_pcie(x) …
#define PCIE_IRQ_PULSE …
#define IRQ_INTA_ASSERT …
#define IRQ_INTB_ASSERT …
#define IRQ_INTC_ASSERT …
#define IRQ_INTD_ASSERT …
#define PCIE_IRQ_LEVEL …
#define PCIE_IRQ_SPECIAL …
#define PCIE_IRQ_EN_PULSE …
#define PCIE_IRQ_EN_LEVEL …
#define PCIE_IRQ_EN_SPECIAL …
#define PCIE_SW_WAKE …
#define PCIE_BUS_EN …
#define PCIE_CORE_RESET …
#define PCIE_CORE_RESET_ENABLE …
#define PCIE_STICKY_RESET …
#define PCIE_NONSTICKY_RESET …
#define PCIE_APP_INIT_RESET …
#define PCIE_APP_LTSSM_ENABLE …
#define PCIE_ELBI_RDLH_LINKUP …
#define PCIE_ELBI_XMLH_LINKUP …
#define PCIE_ELBI_LTSSM_ENABLE …
#define PCIE_ELBI_SLV_AWMISC …
#define PCIE_ELBI_SLV_ARMISC …
#define PCIE_ELBI_SLV_DBI_ENABLE …
struct exynos_pcie { … };
static void exynos_pcie_writel(void __iomem *base, u32 val, u32 reg)
{ … }
static u32 exynos_pcie_readl(void __iomem *base, u32 reg)
{ … }
static void exynos_pcie_sideband_dbi_w_mode(struct exynos_pcie *ep, bool on)
{ … }
static void exynos_pcie_sideband_dbi_r_mode(struct exynos_pcie *ep, bool on)
{ … }
static void exynos_pcie_assert_core_reset(struct exynos_pcie *ep)
{ … }
static void exynos_pcie_deassert_core_reset(struct exynos_pcie *ep)
{ … }
static int exynos_pcie_start_link(struct dw_pcie *pci)
{ … }
static void exynos_pcie_clear_irq_pulse(struct exynos_pcie *ep)
{ … }
static irqreturn_t exynos_pcie_irq_handler(int irq, void *arg)
{ … }
static void exynos_pcie_enable_irq_pulse(struct exynos_pcie *ep)
{ … }
static u32 exynos_pcie_read_dbi(struct dw_pcie *pci, void __iomem *base,
u32 reg, size_t size)
{ … }
static void exynos_pcie_write_dbi(struct dw_pcie *pci, void __iomem *base,
u32 reg, size_t size, u32 val)
{ … }
static int exynos_pcie_rd_own_conf(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 *val)
{ … }
static int exynos_pcie_wr_own_conf(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 val)
{ … }
static struct pci_ops exynos_pci_ops = …;
static int exynos_pcie_link_up(struct dw_pcie *pci)
{ … }
static int exynos_pcie_host_init(struct dw_pcie_rp *pp)
{ … }
static const struct dw_pcie_host_ops exynos_pcie_host_ops = …;
static int exynos_add_pcie_port(struct exynos_pcie *ep,
struct platform_device *pdev)
{ … }
static const struct dw_pcie_ops dw_pcie_ops = …;
static int exynos_pcie_probe(struct platform_device *pdev)
{ … }
static void exynos_pcie_remove(struct platform_device *pdev)
{ … }
static int exynos_pcie_suspend_noirq(struct device *dev)
{ … }
static int exynos_pcie_resume_noirq(struct device *dev)
{ … }
static const struct dev_pm_ops exynos_pcie_pm_ops = …;
static const struct of_device_id exynos_pcie_of_match[] = …;
static struct platform_driver exynos_pcie_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_DEVICE_TABLE(of, exynos_pcie_of_match);