Query on pinctrl usage for DT nodes
Tony Lindgren
tony at atomide.com
Wed Apr 3 14:42:03 EDT 2013
* Tony Lindgren <tony at atomide.com> [130403 11:42]:
> * Stephen Warren <swarren at wwwdotorg.org> [130403 09:49]:
> > On 04/03/2013 03:16 AM, Prabhakar Lad wrote:
> > > Hi Linus/Stephen,
> > >
> > > I am working adding DT nodes for DA850.
> > >
> > > Following is the pin control snippet of da850.dtsi:-
> > >
> > > pmx_core: pinmux at 1c14120 {
> > ...
> > > i2c0_pins: pinmux_i2c0_pins {
> > > pinctrl-single,bits = <
> > > /* I2C0_SDA,I2C0_SCL */
> > > 0x10 0x00002200 0x0000ff00
> > > >;
> > > };
> > > mdio_pins: pinmux_mdio_pins {
> > > pinctrl-single,bits = <
> > > /* MDIO_CLK, MDIO_D */
> > > 0x10 0x00000088 0x000000ff
> > > >;
> > > };
> > > }
> > >
> > > And following is the code snippet for dts:-
> > >
> > > i2c0: i2c at 1c22000 {
> > > status = "okay";
> > > clock-frequency = <100000>;
> > > pinctrl-names = "default";
> > > pinctrl-0 = <&i2c0_pins>;
> > > };
> > > mdio: mdio at 1e24000 {
> > > status = "okay";
> > > bus_freq = <2200000>;
> > > pinctrl-names = "default";
> >
> > I assume there's also the following there:
> >
> > pinctrl-0 = <&mdio_pins>;
> >
> > > };
> > >
> > > But while booting I see the following boot log:-
> > > ...
> > > cpuidle: using governor menu
> > > TCP: cubic registered
> > > NET: Registered protocol family 17
> > > pinctrl-single 1c14120.pinmux: pin 1c14130 already requested by
> > > davinci_mdio.0; cannot claim for i2c_davinci.1
> > > pinctrl-single 1c14120.pinmux: pin-4 (i2c_davinci.1) status -22
> > > pinctrl-single 1c14120.pinmux: could not request pin 4 on device pinctrl-single
> > > console [netcon0] enabled
> > > ....
> > >
> > > This is because the mdio and i2c are using same pin 0x10,
> >
> > How can two devices use the same pin? I mean physically, in hardware?
> >
> > Is this because pinctrl-single uses the register address as the pin
> > number, whereas you have registers which configure multiple pins at
> > once? If so, your hardware isn't something that can be represented by
> > pinctrl-single.
> >
> > > Is there any
> > > alternative way to handle if the two node's are using same pins any
> > > pointers could be very much helpful ?
>
> It could also that the mux register(s) follow the one-mux-per-bit
> mapping.
>
> In that case pinctrl-single,bits option as documented in the
> Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt.
Oh it's already using pinctrl-single,bits option. Maybe there's a
bug, adding Peter to cc.
Regards,
Tony
More information about the linux-arm-kernel
mailing list