[U-Boot] PCI on mpc832x?

Kumar Gala galak at kernel.crashing.org
Mon Apr 27 16:12:35 CEST 2009


On Apr 24, 2009, at 9:11 AM, Joakim Tjernlund wrote:

> Scott Wood <scottwood at freescale.com> wrote on 23/04/2009 18:40:01:
>>
>> On Thu, Apr 23, 2009 at 03:32:11PM +0200, Joakim Tjernlund wrote:
>>> Still trying to wrap my head around PCI and I wonder if I need to do
> some
>>> HW init in u-boot in order to use the PCI controller in Linux?
>>
>> Yes.  See pci_init_board() in mpc8323erdb for an example.
>
> Thanks Scott, this was very helpful.
>
> I am trying to map the "ranges" property in the OF tree and I am  
> looking
> at
> the dts files in the kernel tree.
> There are three that comes somewhat close but they all have somewhat
> different
> "ranges" propery:
>
> mpc832x_mds.dts:
> ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000

this is PCI MMIO non-prefetch @ 0x90000000 (cpu & pci) of size 256M

>           0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000

this is PCI MMIO prefetch @ 0x80000000 (cpu & pci) of size 256M

>           0x01000000 0x0 0x00000000 0xd0000000 0x0 0x00100000>;

this is PCI IO @ @ cpu phy 0xd0000000 pci io 0x0 of size 1M

> mpc832x_rdb.dts:
> ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
>           0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
>           0x01000000 0x0 0xd0000000 0xd0000000 0x0 0x04000000>;
>
> mpc8313erdb.dts:
> ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
>           0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
>           0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>;
>
> Don't understand how I should do here. Just select the mpc832x_rdb.dts
> "ranges" and define my base addresses similarly?
> #define CFG_PCI1_MEM_BASE       0x80000000
> #define CFG_PCI1_MEM_PHYS       CFG_PCI1_MEM_BASE
> #define CFG_PCI1_MEM_SIZE       0x10000000      /* 256M */
> #define CFG_PCI1_MMIO_BASE        0x90000000
> #define CFG_PCI1_MMIO_PHYS        CFG_PCI1_MMIO_BASE
> #define CFG_PCI1_MMIO_SIZE        0x10000000    /* 256M */
> #define CFG_PCI1_IO_BASE        0xd0000000
> #define CFG_PCI1_IO_PHYS        CFG_PCI1_IO_BASE
> #define CFG_PCI1_IO_SIZE        0x4000000       /* 64M */

this is overkill for IO, 64k is the max.  (its probably inherited when  
we didn't know better).

- k


More information about the U-Boot mailing list