#include <linux/delay.h>
#include <linux/firmware.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>
#include "../../pci.h"
#include "pcie-designware.h"
#define PCIEMSR0 …
#define APP_SRIS_MODE …
#define DEVICE_TYPE_EP …
#define DEVICE_TYPE_RC …
#define BIFUR_MOD_SET_ON …
#define PCIEINTSTS0 …
#define PCIEINTSTS0EN …
#define MSI_CTRL_INT …
#define SMLH_LINK_UP …
#define RDLH_LINK_UP …
#define PCIEDMAINTSTSEN …
#define PCIEDMAINTSTSEN_INIT …
#define PRTLGC89 …
#define PRTLGC90 …
#define PCIERSTCTRL1 …
#define APP_HOLD_PHY_RST …
#define APP_LTSSM_ENABLE …
#define PCIEPWRMNGCTRL …
#define APP_CLK_REQ_N …
#define APP_CLK_PM_EN …
#define RCAR_NUM_SPEED_CHANGE_RETRIES …
#define RCAR_MAX_LINK_SPEED …
#define RCAR_GEN4_PCIE_EP_FUNC_DBI_OFFSET …
#define RCAR_GEN4_PCIE_EP_FUNC_DBI2_OFFSET …
#define RCAR_GEN4_PCIE_FIRMWARE_NAME …
#define RCAR_GEN4_PCIE_FIRMWARE_BASE_ADDR …
MODULE_FIRMWARE(…);
struct rcar_gen4_pcie;
struct rcar_gen4_pcie_drvdata { … };
struct rcar_gen4_pcie { … };
#define to_rcar_gen4_pcie(_dw) …
static int rcar_gen4_pcie_link_up(struct dw_pcie *dw)
{ … }
static int rcar_gen4_pcie_speed_change(struct dw_pcie *dw)
{ … }
static int rcar_gen4_pcie_start_link(struct dw_pcie *dw)
{ … }
static void rcar_gen4_pcie_stop_link(struct dw_pcie *dw)
{ … }
static int rcar_gen4_pcie_common_init(struct rcar_gen4_pcie *rcar)
{ … }
static void rcar_gen4_pcie_common_deinit(struct rcar_gen4_pcie *rcar)
{ … }
static int rcar_gen4_pcie_prepare(struct rcar_gen4_pcie *rcar)
{ … }
static void rcar_gen4_pcie_unprepare(struct rcar_gen4_pcie *rcar)
{ … }
static int rcar_gen4_pcie_get_resources(struct rcar_gen4_pcie *rcar)
{ … }
static const struct dw_pcie_ops dw_pcie_ops = …;
static struct rcar_gen4_pcie *rcar_gen4_pcie_alloc(struct platform_device *pdev)
{ … }
static int rcar_gen4_pcie_host_init(struct dw_pcie_rp *pp)
{ … }
static void rcar_gen4_pcie_host_deinit(struct dw_pcie_rp *pp)
{ … }
static const struct dw_pcie_host_ops rcar_gen4_pcie_host_ops = …;
static int rcar_gen4_add_dw_pcie_rp(struct rcar_gen4_pcie *rcar)
{ … }
static void rcar_gen4_remove_dw_pcie_rp(struct rcar_gen4_pcie *rcar)
{ … }
static void rcar_gen4_pcie_ep_pre_init(struct dw_pcie_ep *ep)
{ … }
static void rcar_gen4_pcie_ep_init(struct dw_pcie_ep *ep)
{ … }
static void rcar_gen4_pcie_ep_deinit(struct rcar_gen4_pcie *rcar)
{ … }
static int rcar_gen4_pcie_ep_raise_irq(struct dw_pcie_ep *ep, u8 func_no,
unsigned int type, u16 interrupt_num)
{ … }
static const struct pci_epc_features rcar_gen4_pcie_epc_features = …;
static const struct pci_epc_features*
rcar_gen4_pcie_ep_get_features(struct dw_pcie_ep *ep)
{ … }
static unsigned int rcar_gen4_pcie_ep_get_dbi_offset(struct dw_pcie_ep *ep,
u8 func_no)
{ … }
static unsigned int rcar_gen4_pcie_ep_get_dbi2_offset(struct dw_pcie_ep *ep,
u8 func_no)
{ … }
static const struct dw_pcie_ep_ops pcie_ep_ops = …;
static int rcar_gen4_add_dw_pcie_ep(struct rcar_gen4_pcie *rcar)
{ … }
static void rcar_gen4_remove_dw_pcie_ep(struct rcar_gen4_pcie *rcar)
{ … }
static int rcar_gen4_add_dw_pcie(struct rcar_gen4_pcie *rcar)
{ … }
static int rcar_gen4_pcie_probe(struct platform_device *pdev)
{ … }
static void rcar_gen4_remove_dw_pcie(struct rcar_gen4_pcie *rcar)
{ … }
static void rcar_gen4_pcie_remove(struct platform_device *pdev)
{ … }
static int r8a779f0_pcie_ltssm_control(struct rcar_gen4_pcie *rcar, bool enable)
{ … }
static void rcar_gen4_pcie_additional_common_init(struct rcar_gen4_pcie *rcar)
{ … }
static void rcar_gen4_pcie_phy_reg_update_bits(struct rcar_gen4_pcie *rcar,
u32 offset, u32 mask, u32 val)
{ … }
static int rcar_gen4_pcie_reg_test_bit(struct rcar_gen4_pcie *rcar,
u32 offset, u32 mask)
{ … }
static int rcar_gen4_pcie_download_phy_firmware(struct rcar_gen4_pcie *rcar)
{ … }
static int rcar_gen4_pcie_ltssm_control(struct rcar_gen4_pcie *rcar, bool enable)
{ … }
static struct rcar_gen4_pcie_drvdata drvdata_r8a779f0_pcie = …;
static struct rcar_gen4_pcie_drvdata drvdata_r8a779f0_pcie_ep = …;
static struct rcar_gen4_pcie_drvdata drvdata_rcar_gen4_pcie = …;
static struct rcar_gen4_pcie_drvdata drvdata_rcar_gen4_pcie_ep = …;
static const struct of_device_id rcar_gen4_pcie_of_match[] = …;
MODULE_DEVICE_TABLE(of, rcar_gen4_pcie_of_match);
static struct platform_driver rcar_gen4_pcie_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;