i meet some surprising things,when i modify the dts file

Grant Likely grant.likely at secretlab.ca
Thu Jul 29 17:28:14 EST 2010


On Thu, Jul 29, 2010 at 12:08 AM, hacklu <embedway.test at gmail.com> wrote:
>  localbus at f0010100 {
>                 ....
>                 ranges = <
>                                  0 0 FC000000 1000000
>                                  2 0 FA000000 1000000
>                                  1 0 70000000 1000000
>                                >;
>                 flash at 0,0{
>
> .....
> }
>
> flash at 2,0{
>
> ....
> }
>
>          board-control at 1,0{
>                 .....
> }
>
> }
>
> this is part of my dts files. I don't kown what each field means in the
> config rangs.
> for instance, 2 0 FA000000 1000000 .
> I only konw this:
> "2" is means chip selects.
> "0" is what?
> "Fa00000" means the start address.
> "1000000" means the range of the device

Ranges translates from the child address domain to the parent address
domain.  It consists of 3 fields; The child base address, the parent
base address, and the size.  In this case:

child base address := 2 0  (#address-cells = <2> in this node)
parent base address := 0xfa000000 (#address-cells = <1> in parent node)
and length = 0x1000000 (16MB)

For the child address, #address-cells is set to 2, meaning 1 cell for
the chip select #, and 1 cell for an offset into the chip select
range.  In most cases the offset will be zero in a ranges property.

So in this case, the ranges property states that chip select 2 is a
16MB region mapped to base address 0xfa000000.

>
> but ,I got some puzzled.
> when I set the two flash in the 0,1 chips select or 0,2 chips select my
> linux works well.
> and, the board-control only can be set at 1 chis select,otherwise the pci
> doesn't be detected.

Unless the bus controller hardware needs to know the chip select
number for another purpose (ie. setting up a local bus DMA transfer),
you could really use any number for the chip select as long as it is
consistent between the child node and the ranges property.

>
> so , what is the chips select? is it based on hardware?

Yes, it is based on hardware.  The .dts file is describing which CS
line each external device is attached to.

 but my flash can use
> 0,1,2 chips select.
> or it is just set by software? but my pci devece can only work in 1 chips
> select.
>
>
> BTW:
> I also want to know how to write the dts file. I want to understand each
> node in the dts files.
> but I can't get enough documents. I have readed the linux/document/...
> could you privode me some useful information?

See here:

http://www.devicetree.org/Device_Tree_Usage

g.


More information about the Linuxppc-dev mailing list