Re: Query on pin multiplexing with device tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Thursday 25 September 2014 07:39 PM, Maxime Ripard wrote:
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

I was not aware of the device model reading the default and idle state on probe. I have the touchscreen binding set up now.

Thank you very much.

Regards,
Victor


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux