Hi Victor, On Thu, Sep 25, 2014 at 06:36:04PM +0530, Victor Ascroft wrote: > Hello, > > pinctrl_touchctrl_idle: touchctrl_idle { > fsl,pins = < > MF610_PAD_PTA18__GPIO_8 0x0041 > MF610_PAD_PTA19__GPIO_9 0x0041 > >; > }; > > pinctrl_touchctrl_read: touchctrl_read { > fsl,pins = < > MF610_PAD_PTA18__ADC0_SE0 0x0041 > MF610_PAD_PTA19__ADC0_SE1 0x0041 > >; > > If i have pin multiplexing in device tree as above, how can i select > and change the pin multiplexing at run time? This will have to be done by the "consumer" driver, which judging by the node names here will be your touchscreen driver. You will have to reference in pinctrl-names several different states, instead of just "default" that is commonly used, and then, you can modify the state to use using the pinctrl functions. That would make something like this in your DT: touchscreen@deadbeef { pinctrl-names = "default", "idle"; pinctrl-0 = <&pinctrl_touchctrl_read>; pinctrl-1 = <&pinctrl_touchctrl_idle>; }; The good thing about this is that the states default, idle and sleep are already grabbed by the device model whenever your driver is probed, and the only thing you have to do from your driver to switch from one state to another is to call pinctrl_pm_select_default_state or pinctrl_pm_select_idle_state. Maxime -- Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Attachment:
signature.asc
Description: Digital signature
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies