SPEAr320: Add pwm support
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest0 of 3 patches 0 repliesNew
Patches in v1 No applies recorded yet
None of the 3 patches the cover letter announces are in this archive.
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/3] SPEAr320: Add pwm support
Quoted 10 lines · On Monday 30 May 2011 09:21:02 Viresh Kumar wrote:
MAINTAINERS | 5 + arch/arm/configs/spear3xx_defconfig | 2 + arch/arm/mach-spear3xx/include/mach/generic.h | 1 + arch/arm/mach-spear3xx/spear320.c | 16 + arch/arm/mach-spear3xx/spear320_evb.c | 1 + drivers/misc/Kconfig | 7 + drivers/misc/Makefile | 1 + drivers/misc/st_pwm.c | 486 +++++++++++++++++++++++++ 8 files changed, 519 insertions(+), 0 deletions(-) create mode 100644 drivers/misc/st_pwm.c
No objection to your patch, but I think we need to have a long-term plan for pwm:
arnd at wuerfel:~/linux-2.6$ git ls-files | grep pwm.c arch/arm/mach-exynos4/include/mach/pwm-clock.h arch/arm/mach-mxs/devices/platform-mxs-pwm.c arch/arm/mach-s3c64xx/include/mach/pwm-clock.h arch/arm/mach-s5p64x0/include/mach/pwm-clock.h arch/arm/mach-s5pc100/include/mach/pwm-clock.h arch/arm/mach-s5pv210/include/mach/pwm-clock.h arch/arm/mach-vt8500/pwm.c arch/arm/plat-mxc/devices/platform-mxc_pwm.c arch/arm/plat-mxc/pwm.c arch/arm/plat-pxa/pwm.c arch/arm/plat-s3c24xx/include/mach/pwm-clock.h arch/arm/plat-samsung/dev-pwm.c arch/arm/plat-samsung/pwm-clock.c arch/arm/plat-samsung/pwm.c arch/mips/jz4740/pwm.c arch/unicore32/kernel/pwm.c drivers/leds/leds-atmel-pwm.c drivers/leds/leds-pwm.c drivers/mfd/twl6030-pwm.c drivers/misc/ab8500-pwm.c drivers/misc/atmel_pwm.c drivers/misc/ep93xx_pwm.c
My rough feeling is that what this should look like is a new subsystem that exports a set of operations and has specific drivers, like:
drivers/pwm/Kconfigdrivers/pwm/pwm_core.cdrivers/pwm/pwm_pxa.cdrivers/pwm/pwm_unicore.cdrivers/pwm/pwm_st.cdrivers/pwm/pwm_...
This is in the spirit of turning code that is organized by platform into code that is organized by subsystem, and factoring out the common bits.
A real problem we are going to hit without this is the fact that each of these drivers exports the same symbols, which prevents you from building a multi-platform kernel. It will need to export the common set of symbols and pass through operations to the individual drivers then:
arnd at wuerfel:~/linux-2.6$ git ls-files | grep pwm.c | xargs grep EXPORT_SYMBOL -h | sort | uniq -c
1 EXPORT_SYMBOL(pwm_channel_alloc);
1 EXPORT_SYMBOL(pwm_channel_free);
1 EXPORT_SYMBOL(pwm_channel_handler);
1 EXPORT_SYMBOL(__pwm_channel_onoff);
1 EXPORT_SYMBOL(pwm_clk_alloc);
1 EXPORT_SYMBOL(pwm_clk_free);
7 EXPORT_SYMBOL(pwm_config);
7 EXPORT_SYMBOL(pwm_disable);
7 EXPORT_SYMBOL(pwm_enable);
7 EXPORT_SYMBOL(pwm_free);
7 EXPORT_SYMBOL(pwm_request);As you can see here, the one driver is the odd one out, it provides a completely different API. This is drivers/misc/atmel_pwm.c, and it should eventually get converted over.
Arnd