mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
		
			
				
	
	
		
			152 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright 2017 NXP
 | |
|  * Copyright 2014-2015 Freescale Semiconductor, Inc.
 | |
|  * Layerscape PCIe driver
 | |
|  */
 | |
| 
 | |
| #ifndef _PCIE_LAYERSCAPE_H_
 | |
| #define _PCIE_LAYERSCAPE_H_
 | |
| #include <pci.h>
 | |
| #include <dm.h>
 | |
| 
 | |
| #ifndef CONFIG_SYS_PCI_MEMORY_BUS
 | |
| #define CONFIG_SYS_PCI_MEMORY_BUS CONFIG_SYS_SDRAM_BASE
 | |
| #endif
 | |
| 
 | |
| #ifndef CONFIG_SYS_PCI_MEMORY_PHYS
 | |
| #define CONFIG_SYS_PCI_MEMORY_PHYS CONFIG_SYS_SDRAM_BASE
 | |
| #endif
 | |
| 
 | |
| #ifndef CONFIG_SYS_PCI_MEMORY_SIZE
 | |
| #define CONFIG_SYS_PCI_MEMORY_SIZE (2 * 1024 * 1024 * 1024UL) /* 2G */
 | |
| #endif
 | |
| 
 | |
| #ifndef CONFIG_SYS_PCI_EP_MEMORY_BASE
 | |
| #define CONFIG_SYS_PCI_EP_MEMORY_BASE CONFIG_SYS_LOAD_ADDR
 | |
| #endif
 | |
| 
 | |
| #define PCIE_PHYS_SIZE			0x200000000
 | |
| #define LS2088A_PCIE_PHYS_SIZE		0x800000000
 | |
| #define LS2088A_PCIE1_PHYS_ADDR		0x2000000000
 | |
| 
 | |
| /* iATU registers */
 | |
| #define PCIE_ATU_VIEWPORT		0x900
 | |
| #define PCIE_ATU_REGION_INBOUND		(0x1 << 31)
 | |
| #define PCIE_ATU_REGION_OUTBOUND	(0x0 << 31)
 | |
| #define PCIE_ATU_REGION_INDEX0		(0x0 << 0)
 | |
| #define PCIE_ATU_REGION_INDEX1		(0x1 << 0)
 | |
| #define PCIE_ATU_REGION_INDEX2		(0x2 << 0)
 | |
| #define PCIE_ATU_REGION_INDEX3		(0x3 << 0)
 | |
| #define PCIE_ATU_REGION_NUM		6
 | |
| #define PCIE_ATU_CR1			0x904
 | |
| #define PCIE_ATU_TYPE_MEM		(0x0 << 0)
 | |
| #define PCIE_ATU_TYPE_IO		(0x2 << 0)
 | |
| #define PCIE_ATU_TYPE_CFG0		(0x4 << 0)
 | |
| #define PCIE_ATU_TYPE_CFG1		(0x5 << 0)
 | |
| #define PCIE_ATU_CR2			0x908
 | |
| #define PCIE_ATU_ENABLE			(0x1 << 31)
 | |
| #define PCIE_ATU_BAR_MODE_ENABLE	(0x1 << 30)
 | |
| #define PCIE_ATU_BAR_NUM(bar)		((bar) << 8)
 | |
| #define PCIE_ATU_LOWER_BASE		0x90C
 | |
| #define PCIE_ATU_UPPER_BASE		0x910
 | |
| #define PCIE_ATU_LIMIT			0x914
 | |
| #define PCIE_ATU_LOWER_TARGET		0x918
 | |
| #define PCIE_ATU_BUS(x)			(((x) & 0xff) << 24)
 | |
| #define PCIE_ATU_DEV(x)			(((x) & 0x1f) << 19)
 | |
| #define PCIE_ATU_FUNC(x)		(((x) & 0x7) << 16)
 | |
| #define PCIE_ATU_UPPER_TARGET		0x91C
 | |
| 
 | |
| /* DBI registers */
 | |
| #define PCIE_SRIOV		0x178
 | |
| #define PCIE_STRFMR1		0x71c /* Symbol Timer & Filter Mask Register1 */
 | |
| #define PCIE_DBI_RO_WR_EN	0x8bc
 | |
| 
 | |
| #define PCIE_LINK_CAP		0x7c
 | |
| #define PCIE_LINK_SPEED_MASK	0xf
 | |
| #define PCIE_LINK_WIDTH_MASK	0x3f0
 | |
| #define PCIE_LINK_STA		0x82
 | |
| 
 | |
| #define LTSSM_STATE_MASK	0x3f
 | |
| #define LTSSM_PCIE_L0		0x11 /* L0 state */
 | |
| 
 | |
| #define PCIE_DBI_SIZE		0x100000 /* 1M */
 | |
| 
 | |
| #define PCIE_LCTRL0_CFG2_ENABLE	(1 << 31)
 | |
| #define PCIE_LCTRL0_VF(vf)	((vf) << 22)
 | |
| #define PCIE_LCTRL0_PF(pf)	((pf) << 16)
 | |
| #define PCIE_LCTRL0_VF_ACTIVE	(1 << 21)
 | |
| #define PCIE_LCTRL0_VAL(pf, vf)	(PCIE_LCTRL0_PF(pf) |			   \
 | |
| 				 PCIE_LCTRL0_VF(vf) |			   \
 | |
| 				 ((vf) == 0 ? 0 : PCIE_LCTRL0_VF_ACTIVE) | \
 | |
| 				 PCIE_LCTRL0_CFG2_ENABLE)
 | |
| 
 | |
| #define PCIE_NO_SRIOV_BAR_BASE	0x1000
 | |
| 
 | |
| #define PCIE_PF_NUM		2
 | |
| #define PCIE_VF_NUM		64
 | |
| 
 | |
| #define PCIE_BAR0_SIZE		(4 * 1024) /* 4K */
 | |
| #define PCIE_BAR1_SIZE		(8 * 1024) /* 8K for MSIX */
 | |
| #define PCIE_BAR2_SIZE		(4 * 1024) /* 4K */
 | |
| #define PCIE_BAR4_SIZE		(1 * 1024 * 1024) /* 1M */
 | |
| 
 | |
| /* LUT registers */
 | |
| #define PCIE_LUT_UDR(n)		(0x800 + (n) * 8)
 | |
| #define PCIE_LUT_LDR(n)		(0x804 + (n) * 8)
 | |
| #define PCIE_LUT_ENABLE		(1 << 31)
 | |
| #define PCIE_LUT_ENTRY_COUNT	32
 | |
| 
 | |
| /* PF Controll registers */
 | |
| #define PCIE_PF_CONFIG		0x14
 | |
| #define PCIE_PF_VF_CTRL		0x7F8
 | |
| #define PCIE_PF_DBG		0x7FC
 | |
| #define PCIE_CONFIG_READY	(1 << 0)
 | |
| 
 | |
| #define PCIE_SRDS_PRTCL(idx)	(PCIE1 + (idx))
 | |
| #define PCIE_SYS_BASE_ADDR	0x3400000
 | |
| #define PCIE_CCSR_SIZE		0x0100000
 | |
| 
 | |
| /* CS2 */
 | |
| #define PCIE_CS2_OFFSET		0x1000 /* For PCIe without SR-IOV */
 | |
| 
 | |
| #define SVR_LS102XA		0
 | |
| #define SVR_VAR_PER_SHIFT	8
 | |
| #define SVR_LS102XA_MASK	0x700
 | |
| #define SVR_LS2088A		0x870900
 | |
| #define SVR_LS2084A		0x870910
 | |
| #define SVR_LS2048A		0x870920
 | |
| #define SVR_LS2044A		0x870930
 | |
| #define SVR_LS2081A		0x870918
 | |
| #define SVR_LS2041A		0x870914
 | |
| 
 | |
| /* LS1021a PCIE space */
 | |
| #define LS1021_PCIE_SPACE_OFFSET	0x4000000000ULL
 | |
| #define LS1021_PCIE_SPACE_SIZE		0x0800000000ULL
 | |
| 
 | |
| /* LS1021a PEX1/2 Misc Ports Status Register */
 | |
| #define LS1021_PEXMSCPORTSR(pex_idx)	(0x94 + (pex_idx) * 4)
 | |
| #define LS1021_LTSSM_STATE_SHIFT	20
 | |
| 
 | |
| struct ls_pcie {
 | |
| 	int idx;
 | |
| 	struct list_head list;
 | |
| 	struct udevice *bus;
 | |
| 	struct fdt_resource dbi_res;
 | |
| 	struct fdt_resource lut_res;
 | |
| 	struct fdt_resource ctrl_res;
 | |
| 	struct fdt_resource cfg_res;
 | |
| 	void __iomem *dbi;
 | |
| 	void __iomem *lut;
 | |
| 	void __iomem *ctrl;
 | |
| 	void __iomem *cfg0;
 | |
| 	void __iomem *cfg1;
 | |
| 	bool big_endian;
 | |
| 	bool enabled;
 | |
| 	int next_lut_index;
 | |
| };
 | |
| 
 | |
| extern struct list_head ls_pcie_list;
 | |
| 
 | |
| #endif /* _PCIE_LAYERSCAPE_H_ */
 |