On Tue, Jul 24, 2012 at 11:34:50AM +0200, Attila Kinali wrote:
> Hi,
> 
> I have here an embedded system where i use a serial port as SD Card
> interface as well as SPI interface. I select what i want to use
> by setting a GPIO pin high or low.
> 
> Currently i'm using two different dts files, one that specifies the
> serial port as SD Card interface and one that specifies the serial
> port as SPI interface.
> 
> Now i would like to merge them into one file so that i can select
> which mode to use at runtime. The documentation gave me the impression
> that this should be possible, but i was not able to figure out how
> to do it.
> 
> Would someone be so kind and point me to the documentation/example
> i've missed?
> 
> The current configuration i use is either:
> 
> ssp0: ssp@80010000 {
>         compatible = "fsl,imx23-mmc";
>         pinctrl-names = "default";
>         pinctrl-0 = <&mmc0_8bit_pins_a &mmc1_pins_fixup>;
>         bus-width = <8>;
>         status = "okay";
> };
> 
> or:
> 
> ssp0: ssp@80010000 {
>         #address-cells = <1>;
>         #size-cells = <0>;
>         compatible = "fsl,imx23-spi";
>         fsl,ssp-dma-channel = <1>;
>         pinctrl-names = "default";
>         pinctrl-0 = <&spi_pins_a>;
>         status = "okay";
> 
> };

So, Mitch may have better insights here, but my inclination would be
to do something like this:

ssp-mux@80010000 {
        #address-cells = <1>;
        #size-cells = <0>;
        compatible = "yourvendor,ssp-mux";
        control-line = <&gpio 17>;
        ranges = <0x0 0x80010000>;

        ssp-mmc@0 {
                  compatible = "fsl,imx23-mmc";
                  /* ... */
                  status = "okay";
        };

        ssp-spi@1 {
                  compatible = "fsl,imx23-spi";
                  /* ... */
                  status = "disabled";
        };
};

ranges would need tweaking depending on #size-cells of the parent and
the existing node reg properties, which you don't show.

A hackier, but possibly simpler alternative would be to simply include
both nodes, but have the one that's active by default marked status =
"okay" and the other marked status = "disabled".  Platform specific
knowledge would then me needed to know that with the right gpio magic
the original one can be disabled and the other enabled.

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson
_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to