linux/drivers/pci/controller/dwc/pcie-uniphier-ep.c

// SPDX-License-Identifier: GPL-2.0
/*
 * PCIe endpoint controller driver for UniPhier SoCs
 * Copyright 2018 Socionext Inc.
 * Author: Kunihiko Hayashi <[email protected]>
 */

#include <linux/bitops.h>
#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/iopoll.h>
#include <linux/of.h>
#include <linux/pci.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/reset.h>

#include "pcie-designware.h"

/* Link Glue registers */
#define PCL_RSTCTRL0
#define PCL_RSTCTRL_AXI_REG
#define PCL_RSTCTRL_AXI_SLAVE
#define PCL_RSTCTRL_AXI_MASTER
#define PCL_RSTCTRL_PIPE3

#define PCL_RSTCTRL1
#define PCL_RSTCTRL_PERST

#define PCL_RSTCTRL2
#define PCL_RSTCTRL_PHY_RESET

#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_CLK_CTRL
#define PCL_APP_CLK_REQ

#define PCL_APP_READY_CTRL
#define PCL_APP_LTSSM_ENABLE

#define PCL_APP_MSI0
#define PCL_APP_VEN_MSI_TC_MASK
#define PCL_APP_VEN_MSI_VECTOR_MASK

#define PCL_APP_MSI1
#define PCL_APP_MSI_REQ

#define PCL_APP_INTX
#define PCL_APP_INTX_SYS_INT

#define PCL_APP_PM0
#define PCL_SYS_AUX_PWR_DET

/* assertion time of INTx in usec */
#define PCL_INTX_WIDTH_USEC

struct uniphier_pcie_ep_priv {};

struct uniphier_pcie_ep_soc_data {};

#define to_uniphier_pcie(x)

static void uniphier_pcie_ltssm_enable(struct uniphier_pcie_ep_priv *priv,
				       bool enable)
{}

static void uniphier_pcie_phy_reset(struct uniphier_pcie_ep_priv *priv,
				    bool assert)
{}

static void uniphier_pcie_pro5_init_ep(struct uniphier_pcie_ep_priv *priv)
{}

static void uniphier_pcie_nx1_init_ep(struct uniphier_pcie_ep_priv *priv)
{}

static int uniphier_pcie_nx1_wait_ep(struct uniphier_pcie_ep_priv *priv)
{}

static int uniphier_pcie_start_link(struct dw_pcie *pci)
{}

static void uniphier_pcie_stop_link(struct dw_pcie *pci)
{}

static void uniphier_pcie_ep_init(struct dw_pcie_ep *ep)
{}

static int uniphier_pcie_ep_raise_intx_irq(struct dw_pcie_ep *ep)
{}

static int uniphier_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep,
					  u8 func_no, u16 interrupt_num)
{}

static int uniphier_pcie_ep_raise_irq(struct dw_pcie_ep *ep, u8 func_no,
				      unsigned int type, u16 interrupt_num)
{}

static const struct pci_epc_features*
uniphier_pcie_get_features(struct dw_pcie_ep *ep)
{}

static const struct dw_pcie_ep_ops uniphier_pcie_ep_ops =;

static int uniphier_pcie_ep_enable(struct uniphier_pcie_ep_priv *priv)
{}

static const struct dw_pcie_ops dw_pcie_ops =;

static int uniphier_pcie_ep_probe(struct platform_device *pdev)
{}

static const struct uniphier_pcie_ep_soc_data uniphier_pro5_data =;

static const struct uniphier_pcie_ep_soc_data uniphier_nx1_data =;

static const struct of_device_id uniphier_pcie_ep_match[] =;

static struct platform_driver uniphier_pcie_ep_driver =;
builtin_platform_driver();