[U-Boot] [PATCH] 85xx/p2020ds: Use is_serdes_configured() to determine of PCIe enabled
Kumar Gala
galak at kernel.crashing.org
Thu May 27 23:27:10 CEST 2010
On May 27, 2010, at 2:38 PM, Scott Wood wrote:
> On Thu, May 27, 2010 at 07:45:16AM -0500, Kumar Gala wrote:
>>
>> On May 27, 2010, at 6:20 AM, Wolfgang Denk wrote:
>>
>>> Dear Kumar Gala,
>>>
>>> In message <5F58DE0B-6EF8-4ED6-A1A8-C0E37C8539BE at kernel.crashing.org> you wrote:
>>>>
>>>> This is my fault. However not sure what to do about it since we'd break
>>>> compatibility with kernel .dts to clean this up.
>>>>
>>>> 99% of the u-boot code should match the HW docs. In this one place I
>>>> tried to "rename" things such that it made sense. The pci aliases in
>>>> the .dts are in order of address (so whatever HW controller is @ 0x8000
>>>> would be "pci0", 0x9000 - "pci1", etc.)
>>>
>>> This doesn't seem to be the case in U-Boot; here we see:
>>>
>>> #define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_CCSRBAR+0x8000)
>>> #define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_CCSRBAR+0x9000)
>>> #define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_CCSRBAR+0xa000)
>>>
>>> i. e. the highest number is at the lowest address??
>>
>> Correct, that is matching FSL HW docs numbering/naming.
>>
>> in the .dts the alias:
>> * "pci0" is @ 0x8000 - FSL HW calls it PCIE3
>> * "pci1" is @ 0x9000 - FSL HW calls it PCIE2
>> * "pci2" is @ 0xa000 - FSL HW calls it PCIE1
>
> This is why the dts files should live with u-boot, not Linux...
>
> but if we can't change the dts file, we could ignore the aliases and look up
> PCI controllers by address.
Actually, I think we can just kill the aliases completely.
We can do something like:
for (hose = hose_head; hose; hose = hose->next) {
off = fdt_node_offset_by_compatible(blob, -1, pci_compat);
while (off != -FDT_ERR_NOTFOUND) {
const int reg * = fdt_getprop(blob, off, "reg", NULL);
match hose->cfg_addr against reg
off = fdt_node_offset_by_compatible(blob, off, pci_compat);
}
}
- k
More information about the U-Boot
mailing list