GPIO and Pinmux device tree support for Exynos.

Stephen Warren swarren at nvidia.com
Tue Aug 16 01:54:10 EST 2011


Shawn Guo wrote at Saturday, August 13, 2011 8:01 AM:
> On Thu, Aug 11, 2011 at 01:06:19PM -0700, Stephen Warren wrote:
> > Thomas Abraham wrote at Thursday, August 11, 2011 12:09 PM:
> > > I did some work on the gpio and pinmux device tree support for exynos.
> > > I thought to discuss with you about what was done before proceeding
> > > further.
> > >
> > > In the dts file, the interrupt controller node is listed as
> > >
> > > GPA: gpio-controller at 11400000 {
> > > 		compatible = "samsung,exynos4-gpio-gpa0", "samsung,exynos4-gpio";
> > > 		#gpio-cells = <4>;
> > > 		gpio-controller;
> > > };
> > >
> > > The meaning of the 4 cells are as below. The values of all the cells
> > > are set as per the exynos chip specification.
> > >
> > > < [GPIO Pin Number]  [Pin-Mux Function Number] [Pull Up/Down Setting]
> > > [Driver Strength Setting] >
> > >
> > >
> > > Device nodes would include the gpio's that it would use (as in below example)
> > >
> > > serial at 13800000 {
> > > 		compatible = "samsung,s5pv310-uart";
> > > 		reg = <0x13800000 0x100>;
> > > 		interrupts = <116>;
> > > 		gpios = <&GPA  0  2  0  2   /* Tx */
> > > 				&GPA  1  2  0  2>;  /* Rx */
> > > };
> >
> > The one problem with this approach is that presumably every single driver
> > (e.g. for the serial port above) must look for and handle the gpios
> > property, whereas presumably a serial port would otherwise have no need
> > to deal with GPIOs.
>
> I think that individual driver still needs to look for gpios property
> to actually use gpio with gpiolib api like gpio_request(),
> gpio_direction_output() etc. no?

If those pins are actually used as GPIOs with gpio_set/get_value, then
yes, certainly.

However, given the comments in your example at least, it sounds like those
pins are the serial RX/TX lines, in which case they aren't being used as
GPIOs, but are driven by hardware. As such, I'd expect gpio_direction_*()
to be irrelevant for them, since I think those function are only intended
for SW-controlled literal GPIOs. If HW-controlled pins need direction
configuration, that's logically pinmux functionality rather than GPIO
functionality, even if on Exynos, both those functionalities are provided
by the same HW.

-- 
nvpublic



More information about the devicetree-discuss mailing list