Hey Thierry, With this patch set I wanted to add some new features to the PWM framework, while doing so, I ran into 2 minor things with the lpc18xx and sunxi driver.
The lpc18xx I bumped into because I was trying to learn from existing drivers. Here I only added the setter to set the chip_data, since I think it is bad practice to set data directly in the struct, I'll be happy to stand corrected however and that patch not applied. Since I use the sunxi platform a lot, I used this platform to test things with and to also ran into some issues with the hardware PWM as can be seen in its commit log. The major feature of this patch-set however is the introduction of the Generic GPIO based PWM driver based on the high-resolution timers. On an Olimex Lime2 featuring an Allwinner A20 SoC, I can toggle quite reliably at 100 kHz. At 150 kHz the SoC started to show signs of being to slow and the scope traces started to become inconsistent. Naturally of course, a GPIO based PWM is heavily dependent on system load and on the SoC. For some use cases a bit-banged PWM might not be ideal, audio for example does not sound 'pitch-perfect' but does work pretty alright. It really is up to the users what one might one to use a bit-banged GPIO driver for. Finally, I've started to add a 'pulse' option to the PWM framework and added it to the sunxi and gpio variants. It currently does not work and I did not wanted to submit it until Boris's PWM patches where in, but I also felt an early review on the intention would be a good idea. The idea is using this new feature, we can start emitting a fixed number of pulses, using the PWM 'hardware' guaranteeing properly timed output. Not all hardware may support this at all (might be emulated however) and the sunxi hardware for example is limited to 1 pulse max (but may emulate more with timers for example). The GPIO driver is able to produce a lot of timed pulses however. Thanks, Olliver Signed-off-by: Olliver Schinagl <oli...@schinagl.nl> Olliver Schinagl (10): pwm: lpc18xx_pwm: use pwm_set_chip_data pwm: sunxi: fix whitespace issue pwm: sunxi: Yield some time to the pwm-block to become ready pwm: core: use bitops pwm: sysfs: do not unnecessarily store result in var pwm: sysfs: make use of the DEVICE_ATTR_[RW][WO] macro's pwm: gpio: Add a generic gpio based PWM driver pwm: core: add pulse feature to the PWM framework pwm: pwm_gpio: add pulse option pwm: sunxi: Add possibility to pulse the sunxi pwm output Documentation/devicetree/bindings/pwm/pwm-gpio.txt | 18 ++ MAINTAINERS | 5 + drivers/pwm/Kconfig | 15 ++ drivers/pwm/Makefile | 1 + drivers/pwm/core.c | 30 ++- drivers/pwm/pwm-gpio.c | 276 +++++++++++++++++++++ drivers/pwm/pwm-lpc18xx-sct.c | 11 +- drivers/pwm/pwm-sun4i.c | 73 ++++-- drivers/pwm/sysfs.c | 133 +++++++--- include/linux/pwm.h | 71 +++++- 10 files changed, 556 insertions(+), 77 deletions(-) create mode 100644 Documentation/devicetree/bindings/pwm/pwm-gpio.txt create mode 100644 drivers/pwm/pwm-gpio.c -- 2.6.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/