...
> 
>       switched-bank@2,0 {
>               // no simple-bus here
>               compatible = "something specific to your board's setup";
>               ranges = <0 0 2 0 0x8000>;
> 
>               // reg is here just to make the unit-addres valid
>               reg = <2 0 0>;
> 
>               #address-cells = <2>;
>               #size-cells = <1>;
> 
>               // specify a phandle to the i2c device and any other
>               // relevant details for identifying which knob of the
>               // switch needs to be turned...
> 
>               // replace x/y with appropriate switch ID, and 0 0x8000
>               // with appropriate portion of the window being used by
>               // each device
>               fpga@x,0 {
>                       compatible = ...
>                       reg = <x 0 0x8000>;
>                       ...
>               };
> 
>               fpga@y,0 {
>                       compatible = ...
>                       reg = <y 0 0x8000>;
>                       ...
>               };
>       };
> };
> 
> >
> >             localbus@ffe124000 {
> >                 compatible = "fsl,p4080-elbc", "fsl,elbc", "simple-
> bus";
> >                 reg = <0xf 0xfe124000 0 0x1000>;
> >                 interrupts = <25 2 0 0>;
> >                 interrupt-parent = <&mpic>;
> >                 #address-cells = <2>;
> >                 #size-cells = <1>;
> >
> >                 /* Local bus region mappings */
> >                 ranges = <0 0 0xf 0xe8000000 0x08000000         /*
> CS0: Boot flash */
> >                           1 0 0xf 0xd0000000 0x7fff             /*
> CS1: FPGA0 -  LIM */
> >                           2 0 0xf 0xd1000000 0x7fff             /*
> CS2: FPGA1 -  FPE1 */
> >                           2 0 0xf 0xd2000000 0x7fff >;          /*
> CS2: FPGA2 -  FPE2 */
> 
> The binding for FSL localbus nodes
> (Documentation/devicetree/bindings/powerpc/fsl/lbc.txt) says that there
> is a one-to-one correspondence between "ranges" entries and
> chipselects,
> based on how the eLBC is actually programmed.  The details of what is
> attached come in the subnodes.
> 
> I don't see how the above mapping is possible with eLBC -- you're
> splitting CS2 among 0xd1000000..0xd1007fff and 0xd2000000..0xd2007fff.
> Since you have CS1 at 0xd0000000, alignment restrictions prevent CS2
> from covering both of those regions -- unless you've got overlapping
> mappings, with CS2 being at least 0xd0000000..0xd3ffffff, and are
> relying on CS1 taking priority due to being lower-numbered.
> 
> I hope you're not doing that, and that these aren't the real addresses
> (or they can be changed) -- but if you must do this, that breaks the
> one-to-one model, so you'd need both ranges entries.
> 
> Also note that the final cell in each ranges entry should be the size,
> not the size minus one.
> 
> >                 fpe1: fpga@2, {
> >                 }
> >
> >                 fpe2: fpga@2, {
> 
> This would be fine for a case where the devices are not switched, but
> rather decode different addresses within the chipselect.
> 
> E.g. CS3 of arch/powerpc/boot/dts/socrates.dts
> 
> -Scott

Thanks, Scott ... I'm looking both at the localbus docs and the Socrates ... I 
will stare at both for the requisite time, and re-emerge when I understand the 
issues.

Rob.
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to