FILE
pcie-cadence-hpa-regs.h
File preview with syntax highlighting.
linux-6.19.14/drivers/pci/controller/cadence/pcie-cadence-hpa-regs.h
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Cadence PCIe controller driver. 4 * 5 * Copyright (c) 2024, Cadence Design Systems 6 * Author: Manikandan K Pillai <mpillai@cadence.com> 7 */ 8#ifndef _PCIE_CADENCE_HPA_REGS_H 9#define _PCIE_CADENCE_HPA_REGS_H 10 11#include <linux/kernel.h> 12#include <linux/pci.h> 13#include <linux/pci-epf.h> 14#include <linux/phy/phy.h> 15#include <linux/bitfield.h> 16 17/* High Performance Architecture (HPA) PCIe controller registers */ 18#define CDNS_PCIE_HPA_IP_REG_BANK 0x01000000 19#define CDNS_PCIE_HPA_IP_CFG_CTRL_REG_BANK 0x01003C00 20#define CDNS_PCIE_HPA_IP_AXI_MASTER_COMMON 0x02020000 21 22/* Address Translation Registers */ 23#define CDNS_PCIE_HPA_AXI_SLAVE 0x03000000 24#define CDNS_PCIE_HPA_AXI_MASTER 0x03002000 25 26/* Root Port register base address */ 27#define CDNS_PCIE_HPA_RP_BASE 0x0 28 29#define CDNS_PCIE_HPA_LM_ID 0x1420 30 31/* Endpoint Function BARs */ 32#define CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG(bar, fn) \ 33 (((bar) < BAR_3) ? CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG0(fn) : \ 34 CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG1(fn)) 35#define CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG0(pfn) (0x4000 * (pfn)) 36#define CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG1(pfn) ((0x4000 * (pfn)) + 0x04) 37#define CDNS_PCIE_HPA_LM_EP_VFUNC_BAR_CFG(bar, fn) \ 38 (((bar) < BAR_3) ? CDNS_PCIE_HPA_LM_EP_VFUNC_BAR_CFG0(fn) : \ 39 CDNS_PCIE_HPA_LM_EP_VFUNC_BAR_CFG1(fn)) 40#define CDNS_PCIE_HPA_LM_EP_VFUNC_BAR_CFG0(vfn) ((0x4000 * (vfn)) + 0x08) 41#define CDNS_PCIE_HPA_LM_EP_VFUNC_BAR_CFG1(vfn) ((0x4000 * (vfn)) + 0x0C) 42#define CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(f) \ 43 (GENMASK(5, 0) << (0x4 + (f) * 10)) 44#define CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG_BAR_APERTURE(b, a) \ 45 (((a) << (4 + ((b) * 10))) & (CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(b))) 46#define CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(f) \ 47 (GENMASK(3, 0) << ((f) * 10)) 48#define CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG_BAR_CTRL(b, c) \ 49 (((c) << ((b) * 10)) & (CDNS_PCIE_HPA_LM_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(b))) 50 51/* Endpoint Function Configuration Register */ 52#define CDNS_PCIE_HPA_LM_EP_FUNC_CFG 0x02C0 53 54/* Root Complex BAR Configuration Register */ 55#define CDNS_PCIE_HPA_LM_RC_BAR_CFG 0x14 56#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR0_APERTURE_MASK GENMASK(9, 4) 57#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR0_APERTURE(a) \ 58 FIELD_PREP(CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR0_APERTURE_MASK, a) 59#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR0_CTRL_MASK GENMASK(3, 0) 60#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR0_CTRL(c) \ 61 FIELD_PREP(CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR0_CTRL_MASK, c) 62#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR1_APERTURE_MASK GENMASK(19, 14) 63#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR1_APERTURE(a) \ 64 FIELD_PREP(CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR1_APERTURE_MASK, a) 65#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR1_CTRL_MASK GENMASK(13, 10) 66#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR1_CTRL(c) \ 67 FIELD_PREP(CDNS_PCIE_HPA_LM_RC_BAR_CFG_BAR1_CTRL_MASK, c) 68 69#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_PREFETCH_MEM_ENABLE BIT(20) 70#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_PREFETCH_MEM_64BITS BIT(21) 71#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_IO_ENABLE BIT(22) 72#define CDNS_PCIE_HPA_LM_RC_BAR_CFG_IO_32BITS BIT(23) 73 74/* BAR control values applicable to both Endpoint Function and Root Complex */ 75#define CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_DISABLED 0x0 76#define CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_IO_32BITS 0x3 77#define CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_MEM_32BITS 0x1 78#define CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_PREFETCH_MEM_32BITS 0x9 79#define CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_MEM_64BITS 0x5 80#define CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_PREFETCH_MEM_64BITS 0xD 81 82#define HPA_LM_RC_BAR_CFG_CTRL_DISABLED(bar) \ 83 (CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_DISABLED << ((bar) * 10)) 84#define HPA_LM_RC_BAR_CFG_CTRL_IO_32BITS(bar) \ 85 (CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_IO_32BITS << ((bar) * 10)) 86#define HPA_LM_RC_BAR_CFG_CTRL_MEM_32BITS(bar) \ 87 (CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_MEM_32BITS << ((bar) * 10)) 88#define HPA_LM_RC_BAR_CFG_CTRL_PREF_MEM_32BITS(bar) \ 89 (CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_PREFETCH_MEM_32BITS << ((bar) * 10)) 90#define HPA_LM_RC_BAR_CFG_CTRL_MEM_64BITS(bar) \ 91 (CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_MEM_64BITS << ((bar) * 10)) 92#define HPA_LM_RC_BAR_CFG_CTRL_PREF_MEM_64BITS(bar) \ 93 (CDNS_PCIE_HPA_LM_BAR_CFG_CTRL_PREFETCH_MEM_64BITS << ((bar) * 10)) 94#define HPA_LM_RC_BAR_CFG_APERTURE(bar, aperture) \ 95 (((aperture) - 7) << (((bar) * 10) + 4)) 96 97#define CDNS_PCIE_HPA_LM_PTM_CTRL 0x0520 98#define CDNS_PCIE_HPA_LM_PTM_CTRL_PTMRSEN BIT(17) 99 100/* Root Port Registers PCI config space for root port function */ 101#define CDNS_PCIE_HPA_RP_CAP_OFFSET 0xC0 102 103/* Region r Outbound AXI to PCIe Address Translation Register 0 */ 104#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0(r) (0x1010 + ((r) & 0x1F) * 0x0080) 105#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_NBITS_MASK GENMASK(5, 0) 106#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_NBITS(nbits) \ 107 (((nbits) - 1) & CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_NBITS_MASK) 108#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK GENMASK(23, 16) 109#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_DEVFN(devfn) \ 110 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK, devfn) 111#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_BUS_MASK GENMASK(31, 24) 112#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_BUS(bus) \ 113 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR0_BUS_MASK, bus) 114 115/* Region r Outbound AXI to PCIe Address Translation Register 1 */ 116#define CDNS_PCIE_HPA_AT_OB_REGION_PCI_ADDR1(r) (0x1014 + ((r) & 0x1F) * 0x0080) 117 118/* Region r Outbound PCIe Descriptor Register */ 119#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0(r) (0x1008 + ((r) & 0x1F) * 0x0080) 120#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK GENMASK(28, 24) 121#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MEM \ 122 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x0) 123#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_IO \ 124 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x2) 125#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_CONF_TYPE0 \ 126 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x4) 127#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_CONF_TYPE1 \ 128 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x5) 129#define CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_NORMAL_MSG \ 130 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC0_TYPE_MASK, 0x10) 131 132/* Region r Outbound PCIe Descriptor Register */ 133#define CDNS_PCIE_HPA_AT_OB_REGION_DESC1(r) (0x100C + ((r) & 0x1F) * 0x0080) 134#define CDNS_PCIE_HPA_AT_OB_REGION_DESC1_BUS_MASK GENMASK(31, 24) 135#define CDNS_PCIE_HPA_AT_OB_REGION_DESC1_BUS(bus) \ 136 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC1_BUS_MASK, bus) 137#define CDNS_PCIE_HPA_AT_OB_REGION_DESC1_DEVFN_MASK GENMASK(23, 16) 138#define CDNS_PCIE_HPA_AT_OB_REGION_DESC1_DEVFN(devfn) \ 139 FIELD_PREP(CDNS_PCIE_HPA_AT_OB_REGION_DESC1_DEVFN_MASK, devfn) 140 141#define CDNS_PCIE_HPA_AT_OB_REGION_CTRL0(r) (0x1018 + ((r) & 0x1F) * 0x0080) 142#define CDNS_PCIE_HPA_AT_OB_REGION_CTRL0_SUPPLY_BUS BIT(26) 143#define CDNS_PCIE_HPA_AT_OB_REGION_CTRL0_SUPPLY_DEV_FN BIT(25) 144 145/* Region r AXI Region Base Address Register 0 */ 146#define CDNS_PCIE_HPA_AT_OB_REGION_CPU_ADDR0(r) (0x1000 + ((r) & 0x1F) * 0x0080) 147#define CDNS_PCIE_HPA_AT_OB_REGION_CPU_ADDR0_NBITS_MASK GENMASK(5, 0) 148#define CDNS_PCIE_HPA_AT_OB_REGION_CPU_ADDR0_NBITS(nbits) \ 149 (((nbits) - 1) & CDNS_PCIE_HPA_AT_OB_REGION_CPU_ADDR0_NBITS_MASK) 150 151/* Region r AXI Region Base Address Register 1 */ 152#define CDNS_PCIE_HPA_AT_OB_REGION_CPU_ADDR1(r) (0x1004 + ((r) & 0x1F) * 0x0080) 153 154/* Root Port BAR Inbound PCIe to AXI Address Translation Register */ 155#define CDNS_PCIE_HPA_AT_IB_RP_BAR_ADDR0(bar) (((bar) * 0x0008)) 156#define CDNS_PCIE_HPA_AT_IB_RP_BAR_ADDR0_NBITS_MASK GENMASK(5, 0) 157#define CDNS_PCIE_HPA_AT_IB_RP_BAR_ADDR0_NBITS(nbits) \ 158 (((nbits) - 1) & CDNS_PCIE_HPA_AT_IB_RP_BAR_ADDR0_NBITS_MASK) 159#define CDNS_PCIE_HPA_AT_IB_RP_BAR_ADDR1(bar) (0x04 + ((bar) * 0x0008)) 160 161/* AXI link down register */ 162#define CDNS_PCIE_HPA_AT_LINKDOWN 0x04 163 164/* 165 * Physical Layer Configuration Register 0 166 * This register contains the parameters required for functional setup 167 * of Physical Layer. 168 */ 169#define CDNS_PCIE_HPA_PHY_LAYER_CFG0 0x0400 170#define CDNS_PCIE_HPA_DETECT_QUIET_MIN_DELAY_MASK GENMASK(26, 24) 171#define CDNS_PCIE_HPA_DETECT_QUIET_MIN_DELAY(delay) \ 172 FIELD_PREP(CDNS_PCIE_HPA_DETECT_QUIET_MIN_DELAY_MASK, delay) 173#define CDNS_PCIE_HPA_LINK_TRNG_EN_MASK GENMASK(27, 27) 174 175#define CDNS_PCIE_HPA_PHY_DBG_STS_REG0 0x0420 176 177#define CDNS_PCIE_HPA_RP_MAX_IB 0x3 178#define CDNS_PCIE_HPA_MAX_OB 15 179 180/* Endpoint Function BAR Inbound PCIe to AXI Address Translation Register */ 181#define CDNS_PCIE_HPA_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar) (((fn) * 0x0080) + ((bar) * 0x0008)) 182#define CDNS_PCIE_HPA_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar) (0x4 + ((fn) * 0x0080) + ((bar) * 0x0008)) 183 184/* Miscellaneous offsets definitions */ 185#define CDNS_PCIE_HPA_TAG_MANAGEMENT 0x0 186#define CDNS_PCIE_HPA_SLAVE_RESP 0x100 187 188#define I_ROOT_PORT_REQ_ID_REG 0x141c 189#define LM_HAL_SBSA_CTRL 0x1170 190 191#define I_PCIE_BUS_NUMBERS (CDNS_PCIE_HPA_RP_BASE + 0x18) 192#define CDNS_PCIE_EROM 0x18 193#endif /* _PCIE_CADENCE_HPA_REGS_H */
~/
Read-only file preview.