pci: ensure enumeration of all devices in pci_init
[oweals/u-boot.git] / drivers / pci / pcie_fsl.h
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 #ifdef CONFIG_SYS_FSL_PCI_VER_3_X
13 #define FSL_PCIE_CAP_ID                 0x70
14 #else
15 #define FSL_PCIE_CAP_ID                 0x4c
16 #endif
17 /* PCIe Device Control Register */
18 #define PCI_DCR                         (FSL_PCIE_CAP_ID + 0x08)
19 /* PCIe Device Status Register */
20 #define PCI_DSR                         (FSL_PCIE_CAP_ID + 0x0a)
21 /* PCIe Link Control Register */
22 #define PCI_LCR                         (FSL_PCIE_CAP_ID + 0x10)
23 /* PCIe Link Status Register */
24 #define PCI_LSR                         (FSL_PCIE_CAP_ID + 0x12)
25
26 #ifndef CONFIG_SYS_PCI_MEMORY_BUS
27 #define CONFIG_SYS_PCI_MEMORY_BUS       0
28 #endif
29
30 #ifndef CONFIG_SYS_PCI_MEMORY_PHYS
31 #define CONFIG_SYS_PCI_MEMORY_PHYS      0
32 #endif
33
34 #if defined(CONFIG_SYS_PCI_64BIT) && !defined(CONFIG_SYS_PCI64_MEMORY_BUS)
35 #define CONFIG_SYS_PCI64_MEMORY_BUS     (64ull * 1024 * 1024 * 1024)
36 #endif
37
38 #define PEX_CSR0_LTSSM_MASK             0xFC
39 #define PEX_CSR0_LTSSM_SHIFT            2
40 #define LTSSM_L0_REV3                   0x11
41 #define LTSSM_L0                        0x16
42
43 struct fsl_pcie {
44         int idx;
45         struct udevice *bus;
46         void __iomem *regs;
47         u32 law_trgt_if;                /* LAW target ID */
48         u32 block_rev;                  /* IP block revision */
49         bool mode;                      /* RC&EP mode flag */
50         bool enabled;                   /* Enable status */
51         struct list_head list;
52 };
53
54 extern struct list_head fsl_pcie_list;
55
56 #endif /* _PCIE_FSL_H_ */