diff options
| author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-12-10 14:31:56 +0100 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-12-10 22:23:59 +0100 | 
| commit | f15ea6e1d67782a1626d4a4922b6c20e380085e5 (patch) | |
| tree | 57d78f1ee94a2060eaa591533278d2934d4f1da3 /arch/powerpc/cpu/mpc85xx/liodn.c | |
| parent | cb7ee1b98cac6baf244daefb1192adf5a47bc983 (diff) | |
| parent | f44483b57c49282299da0e5c10073b909cdad979 (diff) | |
| download | olio-uboot-2014.01-f15ea6e1d67782a1626d4a4922b6c20e380085e5.tar.xz olio-uboot-2014.01-f15ea6e1d67782a1626d4a4922b6c20e380085e5.zip | |
Merge branch 'u-boot/master' into 'u-boot-arm/master'
Conflicts:
	arch/arm/cpu/armv7/rmobile/Makefile
	doc/README.scrapyard
Needed manual fix:
	arch/arm/cpu/armv7/omap-common/Makefile
	board/compulab/cm_t335/u-boot.lds
Diffstat (limited to 'arch/powerpc/cpu/mpc85xx/liodn.c')
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/liodn.c | 25 | 
1 files changed, 21 insertions, 4 deletions
| diff --git a/arch/powerpc/cpu/mpc85xx/liodn.c b/arch/powerpc/cpu/mpc85xx/liodn.c index 4b00da9f7..19e130e87 100644 --- a/arch/powerpc/cpu/mpc85xx/liodn.c +++ b/arch/powerpc/cpu/mpc85xx/liodn.c @@ -239,9 +239,9 @@ static void fdt_fixup_srio_liodn(void *blob, struct srio_liodn_id_table *tbl)  #endif  #define CONFIG_SYS_MAX_PCI_EPS		8 -#define CONFIG_SYS_PCI_EP_LIODN_START	256 -static void fdt_fixup_pci_liodn_offsets(void *fdt, const char *compat) +static void fdt_fixup_pci_liodn_offsets(void *fdt, const char *compat, +					int ep_liodn_start)  {  	int off, pci_idx = 0, pci_cnt = 0, i, rc;  	const uint32_t *base_liodn; @@ -271,7 +271,7 @@ static void fdt_fixup_pci_liodn_offsets(void *fdt, const char *compat)  			continue;  		}  		for (i = 0; i < CONFIG_SYS_MAX_PCI_EPS; i++) -			liodn_offs[i + 1] = CONFIG_SYS_PCI_EP_LIODN_START + +			liodn_offs[i + 1] = ep_liodn_start +  					i * pci_cnt + pci_idx - *base_liodn;  		rc = fdt_setprop(fdt, off, "fsl,liodn-offset-list",  				 liodn_offs, sizeof(liodn_offs)); @@ -338,5 +338,22 @@ void fdt_fixup_liodn(void *blob)  	fdt_fixup_liodn_tbl(blob, rman_liodn_tbl, rman_liodn_tbl_sz);  #endif -	fdt_fixup_pci_liodn_offsets(blob, "fsl,qoriq-pcie-v2.4"); +	ccsr_pcix_t *pcix = (ccsr_pcix_t *)CONFIG_SYS_PCIE1_ADDR; +	int pci_ver = pcix->ipver1 & 0xffff, liodn_base = 0; + +	if (pci_ver >= 0x0204) { +		if (pci_ver >= 0x0300) +			liodn_base = 1024; +		else +			liodn_base = 256; +	} + +	if (liodn_base) { +		char compat[32]; + +		sprintf(compat, "fsl,qoriq-pcie-v%d.%d", +			(pci_ver & 0xff00) >> 8, pci_ver & 0xff); +		fdt_fixup_pci_liodn_offsets(blob, compat, liodn_base); +		fdt_fixup_pci_liodn_offsets(blob, "fsl,qoriq-pcie", liodn_base); +	}  } |