OMAP: Configuring CONTROL_DEVCONF0 register via DT with pinctrl
Tony Lindgren
tony at atomide.com
Tue Aug 7 21:10:42 EST 2012
* Peter Ujfalusi <peter.ujfalusi at ti.com> [120727 02:47]:
> Hello,
>
> I need to find a solution to control 2 bits in CONTROL_DEVCONF0 on OMAP2/3 for
> McBSP1 CLKR/FSR signal routing.
> In boards using McBSP1 we might need to change bit 3 and 4 based on the audio
> setup (how the board has been wired).
>
> So far I have come up with the following idea to handle to but not really sure
> if it is the correct way (I have taken the idea from the arm/dts: Add AM33XX
> basic pinctrl support series).
You need to also consider that CONTROL_DEVCONF0 has the MMC/SDIO module input
clock selection. So pinctrl-single binding would have to be expanded to also
support one-bit-per-mux type registers in addition to one-register-per-mux
registers. And then this could also be used for the MMC/SDIO module input clock.
> In .dtsi file of the SoC:
>
> control_devconf0: pinmux at 48002274 {
> compatible = "pinctrl-single";
> reg = <0x48002274 4>; /* Single register */
> #address-cells = <1>;
> #size-cells = <0>;
> pinctrl-single,register-width = <32>;
> pinctrl-single,function-mask = <0x5F>;
> };
The pinctrl-single,function-mask is for all the registers in the range,
we also need something to specify the device specific mux bits.
> In the .dts file of the board which needs to change the CLKR/FSR configuration:
>
> &control_devconf0 {
> pinctrl-names = "default";
> pinctrl-0 = <&mcbsp1_pins>;
>
> mcbsp1_pins: pinmux_mcbsp1_pins {
> pinctrl-single,pins = <0x00 0x18>; /* CLKR/FSR from CLKX/FSX
> * pin */
> };
>
> };
I think adding support for one-bit-per-mux would require adding something
like this for the binding:
mcbsp1_pins: pinmux_mcbsp1_pins {
/* offset bits mask */
pinctrl-single,bits = <0x00 0x18 0x18>;
};
As otherwise you would not know which bits to clear for alternative
named modes. Or got any better ideas?
Regards,
Tony
More information about the devicetree-discuss
mailing list