1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright 2019 NXP 4 * 5 * PCIe DM U-Boot driver for Freescale PowerPC SoCs 6 * Author: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> 7 */ 8 9 #ifndef _PCIE_FSL_H_ 10 #define _PCIE_FSL_H_ 11 12 /* GPEX CSR */ 13 #define CSR_CLASSCODE 0x474 14 15 #ifdef CONFIG_SYS_FSL_PCI_VER_3_X 16 #define FSL_PCIE_CAP_ID 0x70 17 #else 18 #define FSL_PCIE_CAP_ID 0x4c 19 #endif 20 /* PCIe Device Control Register */ 21 #define PCI_DCR (FSL_PCIE_CAP_ID + 0x08) 22 /* PCIe Device Status Register */ 23 #define PCI_DSR (FSL_PCIE_CAP_ID + 0x0a) 24 /* PCIe Link Control Register */ 25 #define PCI_LCR (FSL_PCIE_CAP_ID + 0x10) 26 /* PCIe Link Status Register */ 27 #define PCI_LSR (FSL_PCIE_CAP_ID + 0x12) 28 29 #define DBI_RO_WR_EN 0x8bc 30 31 #ifndef CONFIG_SYS_PCI_MEMORY_BUS 32 #define CONFIG_SYS_PCI_MEMORY_BUS 0 33 #endif 34 35 #ifndef CONFIG_SYS_PCI_MEMORY_PHYS 36 #define CONFIG_SYS_PCI_MEMORY_PHYS 0 37 #endif 38 39 #if defined(CONFIG_SYS_PCI_64BIT) && !defined(CONFIG_SYS_PCI64_MEMORY_BUS) 40 #define CONFIG_SYS_PCI64_MEMORY_BUS (64ull * 1024 * 1024 * 1024) 41 #endif 42 43 #define PEX_CSR0_LTSSM_MASK 0xFC 44 #define PEX_CSR0_LTSSM_SHIFT 2 45 #define LTSSM_L0_REV3 0x11 46 #define LTSSM_L0 0x16 47 48 struct fsl_pcie_data { 49 u32 block_offset; /* Offset from CCSR of 1st controller */ 50 u32 block_offset_mask; /* Mask out the CCSR base */ 51 u32 stride; /* Offset stride between controllers */ 52 }; 53 54 struct fsl_pcie { 55 int idx; 56 struct udevice *bus; 57 void __iomem *regs; 58 u32 law_trgt_if; /* LAW target ID */ 59 u32 block_rev; /* IP block revision */ 60 bool mode; /* RC&EP mode flag */ 61 bool enabled; /* Enable status */ 62 struct list_head list; 63 struct fsl_pcie_data *info; 64 }; 65 66 extern struct list_head fsl_pcie_list; 67 68 #endif /* _PCIE_FSL_H_ */ 69