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

// SPDX-License-Identifier: GPL-2.0-only
/*
 * PCIe controller driver for Intel Keem Bay
 * Copyright (C) 2020 Intel Corporation
 */

#include <linux/bitfield.h>
#include <linux/bits.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/gpio/consumer.h>
#include <linux/init.h>
#include <linux/iopoll.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/kernel.h>
#include <linux/mod_devicetable.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/property.h>

#include "pcie-designware.h"

/* PCIE_REGS_APB_SLV Registers */
#define PCIE_REGS_PCIE_CFG
#define PCIE_DEVICE_TYPE
#define PCIE_RSTN
#define PCIE_REGS_PCIE_APP_CNTRL
#define APP_LTSSM_ENABLE
#define PCIE_REGS_INTERRUPT_ENABLE
#define MSI_CTRL_INT_EN
#define EDMA_INT_EN
#define PCIE_REGS_INTERRUPT_STATUS
#define MSI_CTRL_INT
#define PCIE_REGS_PCIE_SII_PM_STATE
#define SMLH_LINK_UP
#define RDLH_LINK_UP
#define PCIE_REGS_PCIE_SII_LINK_UP
#define PCIE_REGS_PCIE_PHY_CNTL
#define PHY0_SRAM_BYPASS
#define PCIE_REGS_PCIE_PHY_STAT
#define PHY0_MPLLA_STATE
#define PCIE_REGS_LJPLL_STA
#define LJPLL_LOCK
#define PCIE_REGS_LJPLL_CNTRL_0
#define LJPLL_EN
#define LJPLL_FOUT_EN
#define PCIE_REGS_LJPLL_CNTRL_2
#define LJPLL_REF_DIV
#define LJPLL_FB_DIV
#define PCIE_REGS_LJPLL_CNTRL_3
#define LJPLL_POST_DIV3A
#define LJPLL_POST_DIV2A

#define PERST_DELAY_US
#define AUX_CLK_RATE_HZ

struct keembay_pcie {};

struct keembay_pcie_of_data {};

static void keembay_ep_reset_assert(struct keembay_pcie *pcie)
{}

static void keembay_ep_reset_deassert(struct keembay_pcie *pcie)
{}

static void keembay_pcie_ltssm_set(struct keembay_pcie *pcie, bool enable)
{}

static int keembay_pcie_link_up(struct dw_pcie *pci)
{}

static int keembay_pcie_start_link(struct dw_pcie *pci)
{}

static void keembay_pcie_stop_link(struct dw_pcie *pci)
{}

static const struct dw_pcie_ops keembay_pcie_ops =;

static inline void keembay_pcie_disable_clock(void *data)
{}

static inline struct clk *keembay_pcie_probe_clock(struct device *dev,
						   const char *id, u64 rate)
{}

static int keembay_pcie_probe_clocks(struct keembay_pcie *pcie)
{}

/*
 * Initialize the internal PCIe PLL in Host mode.
 * See the following sections in Keem Bay data book,
 * (1) 6.4.6.1 PCIe Subsystem Example Initialization,
 * (2) 6.8 PCIe Low Jitter PLL for Ref Clk Generation.
 */
static int keembay_pcie_pll_init(struct keembay_pcie *pcie)
{}

static void keembay_pcie_msi_irq_handler(struct irq_desc *desc)
{}

static int keembay_pcie_setup_msi_irq(struct keembay_pcie *pcie)
{}

static void keembay_pcie_ep_init(struct dw_pcie_ep *ep)
{}

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

static const struct pci_epc_features keembay_pcie_epc_features =;

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

static const struct dw_pcie_ep_ops keembay_pcie_ep_ops =;

static const struct dw_pcie_host_ops keembay_pcie_host_ops =;

static int keembay_pcie_add_pcie_port(struct keembay_pcie *pcie,
				      struct platform_device *pdev)
{}

static int keembay_pcie_probe(struct platform_device *pdev)
{}

static const struct keembay_pcie_of_data keembay_pcie_rc_of_data =;

static const struct keembay_pcie_of_data keembay_pcie_ep_of_data =;

static const struct of_device_id keembay_pcie_of_match[] =;

static struct platform_driver keembay_pcie_driver =;
builtin_platform_driver();