Thread (8 messages) flat view 8 messages, 5 authors, 2009-06-12

Re: MPC52xx simple GPIO support

From: Stefan Strobl <hidden>
Date: 2009-06-03 12:42:59

Anton Vorontsov wrote:
Hi Stefan,

On Tue, Jun 02, 2009 at 07:02:25PM +0200, Stefan Strobl wrote:
quoted
Hi
I still don't quite understand how to use the Flattened Device Tree /
Open Firmware. I see there's a driver (mpc52xx_gpt.c) that supports to
use the Pins on the GPT as simple GPIOs.

I can see the appropriate entries in sysfs
(/sys/devices/f0000000.soc5200/f0000620.timer), but how can I actually
use these GPIO's now?
For in-kernel usage example you can take a look at:
arch/powerpc/boot/dts/mpc836x_rdk.dts (upm node, notice gpios = <>)
drivers/mtd/nand/fsl_upm.c (of_get_gpio() then gpio_request()).

For userland usage you need to enable CONFIG_GPIO_SYSFS, and then
look into /sys/class/gpio/{gpiochip,export,gpioNNN}.
Thanks. With CONFIG_GPIO_SYSFS I can see the gpios as you mentioned, but
cannot change its state there.

I've now also added CONFIG_LEDS_GPIO and was able to connect the GPIOs
to LEDs like this:

gpt2: timer@620 {
	compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
	reg = <0x620 0x10>;
	interrupts = <1 11 0>;
	gpio-controller;
	#gpio-cells = <2>;
};

leds {
	compatible = "gpio-leds";
	dbg {
		label = "DbgLED";
		gpios = <&gpt2 0 1>; /* Active low */
		linux,default-trigger = "heartbeat";
	};
};

I can now manipulate the state of the LED in /sys/class/led/DbgLED/,
which is cool.

The led class provides support for setting the brightness, which
obviously the gpio driver doesn't support. The hardware (mpc52xx_gpt)
would support it in PWM mode though. I'm now wandering how this could be
best implemented.

1) - Create some PWM class similar to the GPIO class
   - Add support for PWM mode in mpc52xx_gpt.c that uses that PWM class
   - And add an interface for the LED to use the PWM class

2) - Create an LED driver that accesses the mpc52xx_gpt directly.

I think I would be overwhelmed trying to implement (1) but am confident
to do (2). What do you think is the right approach?

Cheers, Stefan.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help