Skip to content

Commit

Permalink
pwm: atmel: add Timer Counter Block PWM driver
Browse files Browse the repository at this point in the history
This patch adds a PWM driver based on Atmel Timer Counter Block. The
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 2 and 3
* group 2 = PMW 4 and 5

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 the tc-block field in an
"atmel,tcb-pwm" compatible node.

This patch was tested on kizbox board (at91sam9g20 SoC) with pwm-leds.

Signed-off-by: Boris BREZILLON <linux-arm@overkiz.com>
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
  • Loading branch information
Boris BREZILLON authored and Thierry Reding committed Jan 8, 2013
1 parent d1c3ed6 commit 9421bad
Show file tree
Hide file tree
Showing 4 changed files with 476 additions and 0 deletions.
18 changes: 18 additions & 0 deletions Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Atmel TCB PWM controller

Required properties:
- compatible: should be "atmel,tcb-pwm"
- #pwm-cells: Should be 3. The first cell specifies the per-chip index
of the PWM to use, the second cell is the period in nanoseconds and
bit 0 in the third cell is used to encode the polarity of PWM output.
Set bit 0 of the third cell in PWM specifier to 1 for inverse polarity &
set to 0 for normal polarity.
- tc-block: The Timer Counter block to use as a PWM chip.

Example:

pwm {
compatible = "atmel,tcb-pwm";
#pwm-cells = <3>;
tc-block = <1>;
};
12 changes: 12 additions & 0 deletions drivers/pwm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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-tcb.

config PWM_BFIN
tristate "Blackfin PWM support"
depends on BFIN_GPTIMERS
Expand Down
1 change: 1 addition & 0 deletions drivers/pwm/Makefile
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Loading

0 comments on commit 9421bad

Please sign in to comment.