pwm: Add PWM driver for OMAP using dual-mode timers
Subsystems (2)
RFC PATCH 2/3 pwm: Add PWM driver for OMAP using dual-mode timers
Adds support for using a OMAP dual-mode timer with PWM capability as a Linux PWM device. The driver controls the timer by using the dmtimer API.
Add a platform_data structure for each pwm-omap-dmtimer nodes containing the dmtimers functions in order to get driver not rely on platform specific functions.
--- .../devicetree/bindings/pwm/pwm-omap-dmtimer.txt | 18 ++ drivers/pwm/Kconfig | 9 + drivers/pwm/Makefile | 1 + drivers/pwm/pwm-omap-dmtimer.c | 322 +++++++++++++++++++++ include/linux/platform_data/pwm_omap_dmtimer.h | 69 +++++ 5 files changed, 419 insertions(+) create mode 100644 Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt create mode 100644 drivers/pwm/pwm-omap-dmtimer.c create mode 100644 include/linux/platform_data/pwm_omap_dmtimer.h
Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt new file +18 -0
@@ -0,0 +1,18 @@ +* OMAP PWM for dual-mode timers + +Required properties: +- compatible: Shall contain "ti,omap-dmtimer-pwm". +- ti,timers: phandle to PWM capable OMAP timer. See arm/omap/timer.txt for info + about these timers. +- #pwm-cells: Should be 3. See pwm.txt in this directory for a description of + the cells format. + +Optiomal properties: +- ti,prescaler: Should be a value between 0 and 7, see the timers datasheet + +Example: + pwm: omap-pwm { + compatible = "ti,omap-pwm"; + ti,timers = <&timer9>; + #pwm-cells = <3>; + };
drivers/pwm/Kconfig +9 -0
@@ -240,6 +240,15 @@ config PWM_MXS To compile this driver as a module, choose M here: the module will be called pwm-mxs. +config PWM_OMAP_DMTIMER + tristate "OMAP Dual-Mode Timer PWM support" + depends on OF && ARCH_OMAP && OMAP_DM_TIMER + help + Generic PWM framework driver for OMAP Dual-Mode Timer PWM output + + To compile this driver as a module, choose M here: the module + will be called pwm-omap-dmtimer + config PWM_PCA9685 tristate "NXP PCA9685 PWM driver" depends on OF && I2C
drivers/pwm/Makefile +1 -0
@@ -21,6 +21,7 @@ obj-$(CONFIG_PWM_LPSS) += pwm-lpss.o obj-$(CONFIG_PWM_LPSS_PCI) += pwm-lpss-pci.o obj-$(CONFIG_PWM_LPSS_PLATFORM) += pwm-lpss-platform.o obj-$(CONFIG_PWM_MXS) += pwm-mxs.o +obj-$(CONFIG_PWM_OMAP_DMTIMER) += pwm-omap-dmtimer.o obj-$(CONFIG_PWM_PCA9685) += pwm-pca9685.o obj-$(CONFIG_PWM_PUV3) += pwm-puv3.o obj-$(CONFIG_PWM_PXA) += pwm-pxa.o
drivers/pwm/pwm-omap-dmtimer.c new file +322 -0
322 lines not on this page · raw message
include/linux/platform_data/pwm_omap_dmtimer.h new file +69 -0
69 lines not on this page · raw message
Signature · 1 line
1.9.1
Hi,
Quoted 38 lines · Neil Armstrong
Adds support for using a OMAP dual-mode timer with PWM capability as a Linux PWM device. The driver controls the timer by using the dmtimer API.
Add a
platform_datastructure for each pwm-omap-dmtimer nodes containing the dmtimers functions in order to get driver not rely on platform specific functions.Cc Grant Erickson <[email protected]>Cc NeilBrown <[email protected]>Cc Joachim Eastwood <[email protected]>Suggested-by Tony Lindgren <[email protected]>Signed-off-by Neil Armstrong <[email protected]>--- .../devicetree/bindings/pwm/pwm-omap-dmtimer.txt | 18 ++ drivers/pwm/Kconfig | 9 + drivers/pwm/Makefile | 1 + drivers/pwm/pwm-omap-dmtimer.c | 322 +++++++++++++++++++++ include/linux/platform_data/pwm_omap_dmtimer.h | 69 +++++ 5 files changed, 419 insertions(+) create mode 100644 Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt create mode 100644 drivers/pwm/pwm-omap-dmtimer.c create mode 100644 include/linux/platform_data/pwm_omap_dmtimer.hDocumentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt new file +8
-0@@ -0,0 +1,18 @@ +* OMAP PWM for dual-mode timers + +Required properties: +- compatible: Shall contain "ti,omap-dmtimer-pwm". +- ti,timers: phandle to PWM capable OMAP timer. See arm/omap/timer.txt for info + about these timers. +- #pwm-cells: Should be 3. See pwm.txt in this directory for a description of + the cells format.
Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt line 18
Quoted 10 lines
Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt new file +10
-0+ +Optiomal properties: +- ti,prescaler: Should be a value between 0 and 7, see the timers datasheet + +Example: + pwm: omap-pwm { + compatible = "ti,omap-pwm"; + ti,timers = <&timer9>; + #pwm-cells = <3>; + };
I wonder how far are you from a generic pwm-of-timer.c. This looks pretty close to that. You already have a pdata function pointers for pretty much everything, all you need to do is pass a timer phandle and, as long as the functions pointers are implemented, it should work.
You might want to get rid of pdata altogether at some point, this should work as migration path.
Signature · 8 lines
balbi -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 818 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151016/bdb700b1/attachment-0001.sig>