linux/drivers/pci/controller/dwc/pcie-visconti.c

// SPDX-License-Identifier: GPL-2.0
/*
 * DWC PCIe RC driver for Toshiba Visconti ARM SoC
 *
 * Copyright (C) 2021 Toshiba Electronic Device & Storage Corporation
 * Copyright (C) 2021 TOSHIBA CORPORATION
 *
 * Nobuhiro Iwamatsu <[email protected]>
 */

#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

/* Access registers in PCIe ulreg */
static void visconti_ulreg_writel(struct visconti_pcie *pcie, u32 val, u32 reg)
{}

static u32 visconti_ulreg_readl(struct visconti_pcie *pcie, u32 reg)
{}

/* Access registers in PCIe smu */
static void visconti_smu_writel(struct visconti_pcie *pcie, u32 val, u32 reg)
{}

/* Access registers in PCIe mpu */
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)
{}

/*
 * In this SoC specification, the CPU bus outputs the offset value from
 * 0x40000000 to the PCIe bus, so 0x40000000 is subtracted from the CPU
 * bus address. This 0x40000000 is also based on io_base from DT.
 */
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();