specifying two conflicting configs

Mitch Bradley wmb at firmworks.com
Thu Jul 26 10:53:03 EST 2012


On 7/25/2012 11:48 AM, David Gibson wrote:
> 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 at 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 at 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:

The example below looks okay to me, except for the
ranges property.  It doesn't seem that the mux node
"passes through" the address space - because then
the @1 sub-device would have the address 8001001

> 
> ssp-mux at 80010000 {
> 	#address-cells = <1>;
> 	#size-cells = <0>;
> 	compatible = "yourvendor,ssp-mux";
> 	control-line = <&gpio 17>;
> 	ranges = <0x0 0x80010000>;
> 
> 	ssp-mmc at 0 {
> 		  compatible = "fsl,imx23-mmc";
> 		  /* ... */
> 		  status = "okay";
> 	};
> 
> 	ssp-spi at 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.
> 


More information about the devicetree-discuss mailing list