Skip to contentSkip to conversation

pwm: atmel: add Timer Counter Block PWM driver

PATCH Superseded Boris BREZILLON 1 participant 1 message Dec 7, 2012

Subsystems (3)

v2 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 pwm: atmel: add Timer Counter Block PWM driver

Hello,

This patch adds a PWM driver based on Atmel Timer Counter Block. Timer Counter Block is used in Waveform generator mode.

A Timer Counter Block provides up to 6 PWM devices grouped by 2:
* group 0 = PWM 0 and 1
* group 1 = PWM 1 and 2
* group 2 = PMW 3 and 4

PWM devices in a given group must be configured with the same period value.
If a PWM device in a group tries to change the period value and the other device is already configured with a different value an error will be returned.

This driver requires device tree support.
The Timer Counter Block number used to create a PWM chip is given by tc-block field in an "atmel,pwm-tcb" compatible node.

Regards,

Boris

Changes since v1:
- Fix device tree binding Documentation
- Fix Kconfig issues (missing OF dependency, deprecated HAVE_PWM select, ...)
- Fix various coding style issues.
- Cleanup code and add some comments.

---

 create mode 100644 Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
 create mode 100644 drivers/pwm/pwm-atmel-tcb.c
Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt new file +15 -0
new file mode 100644
index 0000000..3f0f0f6
@@ -0,0 +1,15 @@
+Atmel TCB PWM controller
+
+Required properties:
+- compatible: should be "atmel,tcb-pwm"
+- #pwm-cells: should be 2.  The first cell specifies the per-chip index
+  of the PWM to use and the second cell is the period in nanoseconds.
+- tc-block: the Timer Counter block to use as a PWM chip.
+
+Example:
+
+pwm {
+	compatible = "atmel,tcb-pwm";
+	#pwm-cells = <2>;
+	tc-block = <1>;
+};
drivers/pwm/Kconfig +12 -0
index e513cd9..2f4941b 100644
@@ -37,6 +37,18 @@ config PWM_AB8500
 	  To compile this driver as a module, choose M here: the module
 	  will be called pwm-ab8500.
 
+config PWM_ATMEL_TCB
+	tristate "TC Block PWM"
+	depends on ATMEL_TCLIB && OF
+	help
+	  Generic PWM framework driver for Atmel Timer Counter Block.
+
+	  A Timer Counter Block provides 6 PWM devices grouped by 2.
+	  Devices in a given group must have the same period.
+
+	  To compile this driver as a module, choose M here: the module
+	  will be called pwm-atmel-tc.
+
 config PWM_BFIN
 	tristate "Blackfin PWM support"
 	depends on BFIN_GPTIMERS
drivers/pwm/Makefile +1 -0
index 62a2963..94ba21e 100644
@@ -1,5 +1,6 @@
 obj-$(CONFIG_PWM)		+= core.o
 obj-$(CONFIG_PWM_AB8500)	+= pwm-ab8500.o
+obj-$(CONFIG_PWM_ATMEL_TCB)	+= pwm-atmel-tcb.o
 obj-$(CONFIG_PWM_BFIN)		+= pwm-bfin.o
 obj-$(CONFIG_PWM_IMX)		+= pwm-imx.o
 obj-$(CONFIG_PWM_JZ4740)	+= pwm-jz4740.o
drivers/pwm/pwm-atmel-tcb.c new file +433 -0

433 lines not on this page · raw message

Signature · 1 line
1.7.0.4