[PATCH v3 2/4] pinctrl: pinctrl-imx: add imx pinctrl core driver

Shawn Guo shawn.guo at linaro.org
Fri Apr 27 01:48:44 EDT 2012


On Thu, Apr 26, 2012 at 05:15:36PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> We have on Imx mxc at91 and other SoC controler hich you configure per pin
> 
> which means one pin have multiple function and the same function is on
> multiple pins
> 
> so the groups are just a list of possible pins
> 
> Instead of re-inventing bindings we do need to come with a common binding whre
> it's possible
> 
> So instead I proppose (send in the v2) to use common way to describe the group
> 
Let's see how many nodes we will have in device tree.  For imx6q
example, there are 332 pins and each pin has up to 8 function selects.
We will end up with having 332 x 8 = 2656 sub nodes under node
"functions".  Device tree simply cannot afford such a bloating.

Regards,
Shawn

> 1) we describe one function per pin
> 
> 	functions {
> 		rxd_pb12 {
> 			atmel,pin-id = <44>;
> 			atmel,mux = <0>;
> 		};
> 
> 		txd_pb13 {
> 			atmel,pin-id = <45>;
> 			atmel,pull = <2>;
> 			atmel,mux = <0>;
> 		};
> 
> 		txd0_pb19 {
> 			atmel,pin-id = <51>;
> 			atmel,pull = <2>;
> 			atmel,mux = <0>;
> 		};
> 
> 		rxd0_pb18 {
> 			atmel,pin-id = <50>;
> 			atmel,mux = <0>;
> 		};
> 
> 		rts0_pb17 {
> 			atmel,pin-id = <49>;
> 			atmel,mux = <1>;
> 		};
> 
> 		cts0_pb15 {
> 			atmel,pin-id = <47>;
> 			atmel,mux = <1>;
> 		};
> 	};
> 
> 
> advantage if you need to set a pull-up or any pin parameter different on your board
> you can overwrite it without re-creating a group
> 
> This is controller specific
> 
> and then we have the common bindings to describe the group
> by using phandle of the functions to describe the group
> 
> 	groups {
> 		dbgu {
> 			pinctrl,functions = < &rxd_pb12
> 					      &txd_pb13 >;
> 		};
> 
> 		uart0_rxd_txd {
> 			pinctrl,functions = < &rxd0_pb18
> 					      &txd0_pb19 >;
> 		};
> 
> 		uart0_rts_cts {
> 			pinctrl,functions = < &rxd0_pb18
> 					      &txd0_pb19
> 					      &rts0_pb17
> 					      &cts0_pb15 >;
> 		};
> 	};
> 
> this will be handle by a generic code in c
> 
> Best Regards,
> J.



More information about the linux-arm-kernel mailing list