#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/io.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/mfd/syscon.h>
#include <linux/of.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include "../../pci.h"
#include "pcie-cadence.h"
#define ENABLE_REG_SYS_2 …
#define STATUS_REG_SYS_2 …
#define STATUS_CLR_REG_SYS_2 …
#define LINK_DOWN …
#define J7200_LINK_DOWN …
#define J721E_PCIE_USER_CMD_STATUS …
#define LINK_TRAINING_ENABLE …
#define J721E_PCIE_USER_LINKSTATUS …
#define LINK_STATUS …
enum link_status { … };
#define J721E_MODE_RC …
#define LANE_COUNT(n) …
#define GENERATION_SEL_MASK …
struct j721e_pcie { … };
enum j721e_pcie_mode { … };
struct j721e_pcie_data { … };
static inline u32 j721e_pcie_user_readl(struct j721e_pcie *pcie, u32 offset)
{ … }
static inline void j721e_pcie_user_writel(struct j721e_pcie *pcie, u32 offset,
u32 value)
{ … }
static inline u32 j721e_pcie_intd_readl(struct j721e_pcie *pcie, u32 offset)
{ … }
static inline void j721e_pcie_intd_writel(struct j721e_pcie *pcie, u32 offset,
u32 value)
{ … }
static irqreturn_t j721e_pcie_link_irq_handler(int irq, void *priv)
{ … }
static void j721e_pcie_config_link_irq(struct j721e_pcie *pcie)
{ … }
static int j721e_pcie_start_link(struct cdns_pcie *cdns_pcie)
{ … }
static void j721e_pcie_stop_link(struct cdns_pcie *cdns_pcie)
{ … }
static bool j721e_pcie_link_up(struct cdns_pcie *cdns_pcie)
{ … }
static const struct cdns_pcie_ops j721e_pcie_ops = …;
static int j721e_pcie_set_mode(struct j721e_pcie *pcie, struct regmap *syscon,
unsigned int offset)
{ … }
static int j721e_pcie_set_link_speed(struct j721e_pcie *pcie,
struct regmap *syscon, unsigned int offset)
{ … }
static int j721e_pcie_set_lane_count(struct j721e_pcie *pcie,
struct regmap *syscon, unsigned int offset)
{ … }
static int j721e_pcie_ctrl_init(struct j721e_pcie *pcie)
{ … }
static int cdns_ti_pcie_config_read(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 *value)
{ … }
static int cdns_ti_pcie_config_write(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 value)
{ … }
static struct pci_ops cdns_ti_pcie_host_ops = …;
static const struct j721e_pcie_data j721e_pcie_rc_data = …;
static const struct j721e_pcie_data j721e_pcie_ep_data = …;
static const struct j721e_pcie_data j7200_pcie_rc_data = …;
static const struct j721e_pcie_data j7200_pcie_ep_data = …;
static const struct j721e_pcie_data am64_pcie_rc_data = …;
static const struct j721e_pcie_data am64_pcie_ep_data = …;
static const struct j721e_pcie_data j784s4_pcie_rc_data = …;
static const struct j721e_pcie_data j784s4_pcie_ep_data = …;
static const struct of_device_id of_j721e_pcie_match[] = …;
static int j721e_pcie_probe(struct platform_device *pdev)
{ … }
static void j721e_pcie_remove(struct platform_device *pdev)
{ … }
static struct platform_driver j721e_pcie_driver = …;
builtin_platform_driver(…) …;