Re: [PATCH v5] pwm: atmel: add Timer Counter Block PWM driver
On 09/01/2013 08:46, Thierry Reding wrote: > On Tue, Jan 08, 2013 at 04:36:42PM +0100, Boris BREZILLON wrote: >> Hi, >> >> 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 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 tc-block field in an "atmel,tcb-pwm" compatible node. >> >> This patch was tested on kizbox board (at91sam9g20 SoC) with >> pwm-leds. >> >> Regards, >> >> Boris >> >> Signed-off-by: Boris BREZILLON >> --- >> 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. >> >> Changes since v2: >> - Replace kzalloc/kfree with managed versions >>(devm_kzalloc/devm_kfree). >> - Add one cell to device tree binding to support polarity >>flag. >> - Replace min computation (2 div -> 1 mul + 1 div). >> >> Changes since v3: >> - Fix device tree binding Documentation >> - Fix Kconfig description >> - Fix coding style issues (function parameters alignment) >> - Replace 10 value with NSEC_PER_SEC macro >> - Get rid of newcmr variable in enable/disable functions >> - Remove unneeded devm_kfree >> - Add missing atmel_tc_free >> >> Changes since v4: >> - Add missing comments >> - Fix coding style issues (multi-line error string) >> - Fix wrong MODULE_DEVICE_TABLE setting >> - Remove unneeded MODULE_ALIAS declaration >> >> .../devicetree/bindings/pwm/atmel-tcb-pwm.txt | 18 + >> drivers/pwm/Kconfig| 12 + >> drivers/pwm/Makefile |1 + >> drivers/pwm/pwm-atmel-tcb.c| 445 >> >> 4 files changed, 476 insertions(+), 0 deletions(-) >> create mode 100644 Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt >> create mode 100644 drivers/pwm/pwm-atmel-tcb.c > > Applied with minor changes to the commit message, thanks. > > Thierry > Thanks -- 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/
Re: [PATCH v5] pwm: atmel: add Timer Counter Block PWM driver
On 09/01/2013 08:46, Thierry Reding wrote: On Tue, Jan 08, 2013 at 04:36:42PM +0100, Boris BREZILLON wrote: Hi, 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 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 tc-block field in an atmel,tcb-pwm compatible node. This patch was tested on kizbox board (at91sam9g20 SoC) with pwm-leds. Regards, Boris Signed-off-by: Boris BREZILLON linux-...@overkiz.com --- 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. Changes since v2: - Replace kzalloc/kfree with managed versions (devm_kzalloc/devm_kfree). - Add one cell to device tree binding to support polarity flag. - Replace min computation (2 div - 1 mul + 1 div). Changes since v3: - Fix device tree binding Documentation - Fix Kconfig description - Fix coding style issues (function parameters alignment) - Replace 10 value with NSEC_PER_SEC macro - Get rid of newcmr variable in enable/disable functions - Remove unneeded devm_kfree - Add missing atmel_tc_free Changes since v4: - Add missing comments - Fix coding style issues (multi-line error string) - Fix wrong MODULE_DEVICE_TABLE setting - Remove unneeded MODULE_ALIAS declaration .../devicetree/bindings/pwm/atmel-tcb-pwm.txt | 18 + drivers/pwm/Kconfig| 12 + drivers/pwm/Makefile |1 + drivers/pwm/pwm-atmel-tcb.c| 445 4 files changed, 476 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt create mode 100644 drivers/pwm/pwm-atmel-tcb.c Applied with minor changes to the commit message, thanks. Thierry Thanks -- 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/
Re: [PATCH v5] pwm: atmel: add Timer Counter Block PWM driver
On Tue, Jan 08, 2013 at 04:36:42PM +0100, Boris BREZILLON wrote: > Hi, > > 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 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 tc-block field in an "atmel,tcb-pwm" compatible node. > > This patch was tested on kizbox board (at91sam9g20 SoC) with > pwm-leds. > > Regards, > > Boris > > Signed-off-by: Boris BREZILLON > --- > 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. > > Changes since v2: > - Replace kzalloc/kfree with managed versions > (devm_kzalloc/devm_kfree). > - Add one cell to device tree binding to support polarity > flag. > - Replace min computation (2 div -> 1 mul + 1 div). > > Changes since v3: > - Fix device tree binding Documentation > - Fix Kconfig description > - Fix coding style issues (function parameters alignment) > - Replace 10 value with NSEC_PER_SEC macro > - Get rid of newcmr variable in enable/disable functions > - Remove unneeded devm_kfree > - Add missing atmel_tc_free > > Changes since v4: > - Add missing comments > - Fix coding style issues (multi-line error string) > - Fix wrong MODULE_DEVICE_TABLE setting > - Remove unneeded MODULE_ALIAS declaration > > .../devicetree/bindings/pwm/atmel-tcb-pwm.txt | 18 + > drivers/pwm/Kconfig| 12 + > drivers/pwm/Makefile |1 + > drivers/pwm/pwm-atmel-tcb.c| 445 > > 4 files changed, 476 insertions(+), 0 deletions(-) > create mode 100644 Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt > create mode 100644 drivers/pwm/pwm-atmel-tcb.c Applied with minor changes to the commit message, thanks. Thierry pgpAqii8I_kc6.pgp Description: PGP signature
[PATCH v5] pwm: atmel: add Timer Counter Block PWM driver
Hi, 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 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 tc-block field in an "atmel,tcb-pwm" compatible node. This patch was tested on kizbox board (at91sam9g20 SoC) with pwm-leds. Regards, Boris Signed-off-by: Boris BREZILLON --- 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. Changes since v2: - Replace kzalloc/kfree with managed versions (devm_kzalloc/devm_kfree). - Add one cell to device tree binding to support polarity flag. - Replace min computation (2 div -> 1 mul + 1 div). Changes since v3: - Fix device tree binding Documentation - Fix Kconfig description - Fix coding style issues (function parameters alignment) - Replace 10 value with NSEC_PER_SEC macro - Get rid of newcmr variable in enable/disable functions - Remove unneeded devm_kfree - Add missing atmel_tc_free Changes since v4: - Add missing comments - Fix coding style issues (multi-line error string) - Fix wrong MODULE_DEVICE_TABLE setting - Remove unneeded MODULE_ALIAS declaration .../devicetree/bindings/pwm/atmel-tcb-pwm.txt | 18 + drivers/pwm/Kconfig| 12 + drivers/pwm/Makefile |1 + drivers/pwm/pwm-atmel-tcb.c| 445 4 files changed, 476 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt create mode 100644 drivers/pwm/pwm-atmel-tcb.c diff --git a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt new file mode 100644 index 000..de0eaed --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt @@ -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>; +}; diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig index e513cd9..10b6afc 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -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 diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile index 62a2963..94ba21e 100644 --- a/drivers/pwm/Makefile +++ b/drivers/pwm/Makefile @@ -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 diff --git a/drivers/pwm/pwm-atmel-tcb.c b/drivers/pwm/pwm-atmel-tcb.c new file mode 100644 index 000..16cb530 --- /dev/null +++ b/drivers/pwm/pwm-atmel-tcb.c @@ -0,0 +1,445 @@ +/* + * Copyright (C) Overkiz SAS 2012 + * + * Author: Boris BREZILLON + * License terms: GNU General Public License (GPL) version 2 + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define NPWM 6 + +#define ATMEL_TC_ACMR_MASK (ATMEL_TC_ACPA | ATMEL_TC_ACPC |
[PATCH v5] pwm: atmel: add Timer Counter Block PWM driver
Hi, 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 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 tc-block field in an atmel,tcb-pwm compatible node. This patch was tested on kizbox board (at91sam9g20 SoC) with pwm-leds. Regards, Boris Signed-off-by: Boris BREZILLON linux-...@overkiz.com --- 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. Changes since v2: - Replace kzalloc/kfree with managed versions (devm_kzalloc/devm_kfree). - Add one cell to device tree binding to support polarity flag. - Replace min computation (2 div - 1 mul + 1 div). Changes since v3: - Fix device tree binding Documentation - Fix Kconfig description - Fix coding style issues (function parameters alignment) - Replace 10 value with NSEC_PER_SEC macro - Get rid of newcmr variable in enable/disable functions - Remove unneeded devm_kfree - Add missing atmel_tc_free Changes since v4: - Add missing comments - Fix coding style issues (multi-line error string) - Fix wrong MODULE_DEVICE_TABLE setting - Remove unneeded MODULE_ALIAS declaration .../devicetree/bindings/pwm/atmel-tcb-pwm.txt | 18 + drivers/pwm/Kconfig| 12 + drivers/pwm/Makefile |1 + drivers/pwm/pwm-atmel-tcb.c| 445 4 files changed, 476 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt create mode 100644 drivers/pwm/pwm-atmel-tcb.c diff --git a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt new file mode 100644 index 000..de0eaed --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt @@ -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; +}; diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig index e513cd9..10b6afc 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -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 diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile index 62a2963..94ba21e 100644 --- a/drivers/pwm/Makefile +++ b/drivers/pwm/Makefile @@ -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 diff --git a/drivers/pwm/pwm-atmel-tcb.c b/drivers/pwm/pwm-atmel-tcb.c new file mode 100644 index 000..16cb530 --- /dev/null +++ b/drivers/pwm/pwm-atmel-tcb.c @@ -0,0 +1,445 @@ +/* + * Copyright (C) Overkiz SAS 2012 + * + * Author: Boris BREZILLON b.brezil...@overkiz.com + * License terms: GNU General Public License (GPL) version 2 + */ + +#include linux/module.h +#include linux/init.h +#include linux/clocksource.h +#include linux/clockchips.h +#include linux/interrupt.h +#include linux/irq.h + +#include linux/clk.h +#include linux/err.h +#include linux/ioport.h
Re: [PATCH v5] pwm: atmel: add Timer Counter Block PWM driver
On Tue, Jan 08, 2013 at 04:36:42PM +0100, Boris BREZILLON wrote: Hi, 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 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 tc-block field in an atmel,tcb-pwm compatible node. This patch was tested on kizbox board (at91sam9g20 SoC) with pwm-leds. Regards, Boris Signed-off-by: Boris BREZILLON linux-...@overkiz.com --- 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. Changes since v2: - Replace kzalloc/kfree with managed versions (devm_kzalloc/devm_kfree). - Add one cell to device tree binding to support polarity flag. - Replace min computation (2 div - 1 mul + 1 div). Changes since v3: - Fix device tree binding Documentation - Fix Kconfig description - Fix coding style issues (function parameters alignment) - Replace 10 value with NSEC_PER_SEC macro - Get rid of newcmr variable in enable/disable functions - Remove unneeded devm_kfree - Add missing atmel_tc_free Changes since v4: - Add missing comments - Fix coding style issues (multi-line error string) - Fix wrong MODULE_DEVICE_TABLE setting - Remove unneeded MODULE_ALIAS declaration .../devicetree/bindings/pwm/atmel-tcb-pwm.txt | 18 + drivers/pwm/Kconfig| 12 + drivers/pwm/Makefile |1 + drivers/pwm/pwm-atmel-tcb.c| 445 4 files changed, 476 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt create mode 100644 drivers/pwm/pwm-atmel-tcb.c Applied with minor changes to the commit message, thanks. Thierry pgpAqii8I_kc6.pgp Description: PGP signature