From: Sascha Hauer <s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: Thierry Reding
<thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Matthias Kaehlcke
<matthias-RprLehDfhQ3k1uMJSBkQmQ@public.gmane.org>,
Kurt Van Dijck <kurt.van.dijck-/BeEPy95v10@public.gmane.org>,
Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
Grant Likely
<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
Colin Cross <ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>,
Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
Richard Purdie <rpurdie-Fm38FmjxZ/leoWH0uzbU5w@public.gmane.org>,
Mark Brown
<broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>,
Mitch Bradley <wmb-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>,
Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>,
Eric Miao <eric.y.miao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
Ryan Mallon <rmallon-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH v4 03/10] pwm: Add device tree support
Date: Wed, 14 Mar 2012 21:11:38 +0100 [thread overview]
Message-ID: <20120314201138.GU3852@pengutronix.de> (raw)
In-Reply-To: <1331740593-10807-4-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
On Wed, Mar 14, 2012 at 04:56:26PM +0100, Thierry Reding wrote:
> This patch adds helpers to support device tree bindings for the generic
> PWM API. Device tree binding documentation for PWM controllers is also
> provided.
>
> Signed-off-by: Thierry Reding <thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
> ---
> Changes in v4:
> - add OF-specific code removed from patch 2
> - make of_node_to_pwmchip() and of_pwm_simple_xlate() static
> - rename of_get_named_pwm() to of_pwm_request(), return a struct
> pwm_device, get rid of the now unused spec parameter and use the
> device_node.name field as the PWM's name
> - return a requested struct pwm_device from pwm_chip.of_xlate and
> drop the now unused spec parameter
> - move OF support code into drivers/pwm/core.c
> - used deferred probing if a PWM chip is not available yet
>
> Changes in v2:
> - add device tree binding documentation
> - add of_xlate to parse controller-specific PWM-specifier
>
> Documentation/devicetree/bindings/pwm/pwm.txt | 48 ++++++++++
> drivers/of/Kconfig | 6 ++
> drivers/pwm/core.c | 127 +++++++++++++++++++++++++
> include/linux/of_pwm.h | 36 +++++++
> include/linux/pwm.h | 8 ++
> 5 files changed, 225 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pwm/pwm.txt
> create mode 100644 include/linux/of_pwm.h
>
> diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt
> new file mode 100644
> index 0000000..9421fe7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pwm/pwm.txt
> @@ -0,0 +1,48 @@
> +Specifying PWM information for devices
> +======================================
> +
> +1) PWM user nodes
> +-----------------
> +
> +PWM users should specify a list of PWM devices that they want to use
> +with a property containing a 'pwm-list':
> +
> + pwm-list ::= <single-pwm> [pwm-list]
> + single-pwm ::= <pwm-phandle> <pwm-specifier>
> + pwm-phandle : phandle to PWM controller node
> + pwm-specifier : array of #pwm-cells specifying the given PWM
> + (controller specific)
> +
> +PWM properties should be named "[<name>-]pwms". Exact meaning of each
> +pwms property must be documented in the device tree binding for each
> +device.
> +
> +The following example could be used to describe a PWM-based backlight
> +device:
> +
> + pwm: pwm {
> + #pwm-cells = <2>;
> + };
> +
> + [...]
> +
> + bl: backlight {
> + pwms = <&pwm 0 5000000>;
> + };
> +
> +pwm-specifier typically encodes the chip-relative PWM number and the PWM
> +period in nanoseconds.
> +
> +2) PWM controller nodes
> +-----------------------
> +
> +PWM controller nodes must specify the number of cells used for the
> +specifier using the '#pwm-cells' property.
> +
> +An example PWM controller might look like this:
> +
> + pwm: pwm@7000a000 {
> + compatible = "nvidia,tegra20-pwm";
> + reg = <0x7000a000 0x100>;
> + #pwm-cells = <2>;
> + };
> diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
> index 6ea51dc..d47b8ee 100644
> --- a/drivers/of/Kconfig
> +++ b/drivers/of/Kconfig
> @@ -57,6 +57,12 @@ config OF_GPIO
> help
> OpenFirmware GPIO accessors
>
> +config OF_PWM
> + def_bool y
> + depends on PWM
> + help
> + OpenFirmware PWM accessors
> +
> config OF_I2C
> def_tristate I2C
> depends on I2C && !SPARC
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index 74dd295..c600606 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -20,6 +20,7 @@
> */
>
> #include <linux/module.h>
> +#include <linux/of_pwm.h>
> #include <linux/pwm.h>
> #include <linux/radix-tree.h>
> #include <linux/list.h>
> @@ -121,6 +122,75 @@ static int pwm_device_request(struct pwm_device *pwm, const char *label)
> return 0;
> }
>
> +#ifdef CONFIG_OF_PWM
> +static struct pwm_chip *of_node_to_pwmchip(struct device_node *np)
> +{
> + struct pwm_chip *chip;
> +
> + mutex_lock(&pwm_lock);
> +
> + list_for_each_entry(chip, &pwm_chips, list)
> + if (chip->dev && chip->dev->of_node == np) {
> + mutex_unlock(&pwm_lock);
> + return chip;
> + }
> +
> + mutex_unlock(&pwm_lock);
> +
> + return ERR_PTR(-EPROBE_DEFER);
> +}
> +
> +static struct pwm_device *of_pwm_simple_xlate(struct pwm_chip *pc,
> + const struct of_phandle_args *args)
> +{
> + struct pwm_device *pwm;
> +
> + if (pc->of_pwm_n_cells < 2)
> + return ERR_PTR(-EINVAL);
> +
> + if (args->args_count < pc->of_pwm_n_cells)
> + return ERR_PTR(-EINVAL);
> +
> + if (args->args[0] >= pc->npwm)
> + return ERR_PTR(-EINVAL);
> +
> + pwm = pwm_request_from_device(pc->dev, args->args[0], NULL);
> + if (IS_ERR(pwm))
> + return ERR_PTR(-ENODEV);
> +
> + pwm_set_period(pwm, args->args[1]);
> +
> + return pwm;
> +}
> +
> +void of_pwmchip_add(struct pwm_chip *chip)
> +{
> + if (!chip->dev || !chip->dev->of_node)
> + return;
> +
> + if (!chip->of_xlate) {
> + chip->of_xlate = of_pwm_simple_xlate;
> + chip->of_pwm_n_cells = 2;
> + }
> +
> + of_node_get(chip->dev->of_node);
> +}
> +
> +void of_pwmchip_remove(struct pwm_chip *chip)
> +{
> + if (chip->dev && chip->dev->of_node)
> + of_node_put(chip->dev->of_node);
> +}
> +#else
> +static inline void of_pwmchip_add(struct pwm_chip *pc)
> +{
> +}
> +
> +static inline void of_pwmchip_remove(struct pwm_chip *pc)
> +{
> +}
> +#endif /* CONFIG_OF_PWM */
> +
> /**
> * pwm_set_chip_data - set private chip data for a PWM
> * @pwm: PWM device
> @@ -184,6 +254,7 @@ int pwmchip_add(struct pwm_chip *chip)
>
> INIT_LIST_HEAD(&chip->list);
> list_add(&chip->list, &pwm_chips);
> + of_pwmchip_add(chip);
>
> out:
> mutex_unlock(&pwm_lock);
> @@ -215,6 +286,7 @@ int pwmchip_remove(struct pwm_chip *chip)
> }
>
> list_del_init(&chip->list);
> + of_pwmchip_remove(chip);
> free_pwms(chip);
>
> out:
> @@ -364,6 +436,61 @@ void pwm_disable(struct pwm_device *pwm)
> }
> EXPORT_SYMBOL_GPL(pwm_disable);
>
> +#ifdef CONFIG_OF
> +/**
> + * of_pwm_request() - request a PWM via the PWM framework
> + * @np: device node to get the PWM from
> + * @propname: property name containing PWM specifier(s)
> + * @index: index of the PWM
> + *
> + * Returns the PWM device parsed from the phandle specified in the given
> + * property of a device tree node or NULL on failure. Values parsed from
> + * the device tree are stored in the returned PWM device object.
> + */
> +struct pwm_device *of_pwm_request(struct device_node *np,
> + const char *propname, int index)
> +{
> + struct pwm_device *pwm = NULL;
> + struct of_phandle_args args;
> + struct pwm_chip *pc;
> + int err;
> +
> + err = of_parse_phandle_with_args(np, propname, "#pwm-cells", index,
> + &args);
> + if (err) {
> + pr_debug("%s(): can't parse property \"%s\"\n", __func__,
> + propname);
> + return ERR_PTR(err);
> + }
> +
> + pc = of_node_to_pwmchip(args.np);
> + if (IS_ERR(pc)) {
> + pr_debug("%s(): PWM chip not found\n", __func__);
> + pwm = ERR_CAST(pc);
> + goto put;
> + }
> +
> + if (args.args_count != pc->of_pwm_n_cells) {
> + pr_debug("%s: wrong #pwm-cells for %s\n", np->full_name,
> + args.np->full_name);
> + pwm = ERR_PTR(-EINVAL);
> + goto put;
> + }
> +
> + pwm = pc->of_xlate(pc, &args);
> + if (IS_ERR(pwm))
> + goto put;
> +
> + pwm->label = np->name;
> +
> +put:
> + of_node_put(args.np);
> +
> + return pwm;
> +}
> +EXPORT_SYMBOL(of_pwm_request);
> +#endif
> +
> #ifdef CONFIG_DEBUG_FS
> static void pwm_dbg_show(struct pwm_chip *chip, struct seq_file *s)
> {
> diff --git a/include/linux/of_pwm.h b/include/linux/of_pwm.h
> new file mode 100644
> index 0000000..a3a3da7
> --- /dev/null
> +++ b/include/linux/of_pwm.h
> @@ -0,0 +1,36 @@
> +/*
> + * OF helpers for the PWM API
> + *
> + * Copyright (c) 2011-2012 Avionic Design GmbH
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#ifndef __LINUX_OF_PWM_H
> +#define __LINUX_OF_PWM_H
> +
> +#include <linux/err.h>
> +#include <linux/pwm.h>
> +
> +struct device_node;
> +
> +#ifdef CONFIG_OF_PWM
> +
> +struct pwm_device *of_pwm_request(struct device_node *np,
> + const char *propname, int index);
> +
> +#else
> +
> +static inline struct pwm_device *of_pwm_request(struct device_node *np,
> + const char *propname,
> + int index);
^^^
No semicolon here please.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
WARNING: multiple messages have this Message-ID (diff)
From: s.hauer@pengutronix.de (Sascha Hauer)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 03/10] pwm: Add device tree support
Date: Wed, 14 Mar 2012 21:11:38 +0100 [thread overview]
Message-ID: <20120314201138.GU3852@pengutronix.de> (raw)
In-Reply-To: <1331740593-10807-4-git-send-email-thierry.reding@avionic-design.de>
On Wed, Mar 14, 2012 at 04:56:26PM +0100, Thierry Reding wrote:
> This patch adds helpers to support device tree bindings for the generic
> PWM API. Device tree binding documentation for PWM controllers is also
> provided.
>
> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
> ---
> Changes in v4:
> - add OF-specific code removed from patch 2
> - make of_node_to_pwmchip() and of_pwm_simple_xlate() static
> - rename of_get_named_pwm() to of_pwm_request(), return a struct
> pwm_device, get rid of the now unused spec parameter and use the
> device_node.name field as the PWM's name
> - return a requested struct pwm_device from pwm_chip.of_xlate and
> drop the now unused spec parameter
> - move OF support code into drivers/pwm/core.c
> - used deferred probing if a PWM chip is not available yet
>
> Changes in v2:
> - add device tree binding documentation
> - add of_xlate to parse controller-specific PWM-specifier
>
> Documentation/devicetree/bindings/pwm/pwm.txt | 48 ++++++++++
> drivers/of/Kconfig | 6 ++
> drivers/pwm/core.c | 127 +++++++++++++++++++++++++
> include/linux/of_pwm.h | 36 +++++++
> include/linux/pwm.h | 8 ++
> 5 files changed, 225 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pwm/pwm.txt
> create mode 100644 include/linux/of_pwm.h
>
> diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt
> new file mode 100644
> index 0000000..9421fe7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pwm/pwm.txt
> @@ -0,0 +1,48 @@
> +Specifying PWM information for devices
> +======================================
> +
> +1) PWM user nodes
> +-----------------
> +
> +PWM users should specify a list of PWM devices that they want to use
> +with a property containing a 'pwm-list':
> +
> + pwm-list ::= <single-pwm> [pwm-list]
> + single-pwm ::= <pwm-phandle> <pwm-specifier>
> + pwm-phandle : phandle to PWM controller node
> + pwm-specifier : array of #pwm-cells specifying the given PWM
> + (controller specific)
> +
> +PWM properties should be named "[<name>-]pwms". Exact meaning of each
> +pwms property must be documented in the device tree binding for each
> +device.
> +
> +The following example could be used to describe a PWM-based backlight
> +device:
> +
> + pwm: pwm {
> + #pwm-cells = <2>;
> + };
> +
> + [...]
> +
> + bl: backlight {
> + pwms = <&pwm 0 5000000>;
> + };
> +
> +pwm-specifier typically encodes the chip-relative PWM number and the PWM
> +period in nanoseconds.
> +
> +2) PWM controller nodes
> +-----------------------
> +
> +PWM controller nodes must specify the number of cells used for the
> +specifier using the '#pwm-cells' property.
> +
> +An example PWM controller might look like this:
> +
> + pwm: pwm at 7000a000 {
> + compatible = "nvidia,tegra20-pwm";
> + reg = <0x7000a000 0x100>;
> + #pwm-cells = <2>;
> + };
> diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
> index 6ea51dc..d47b8ee 100644
> --- a/drivers/of/Kconfig
> +++ b/drivers/of/Kconfig
> @@ -57,6 +57,12 @@ config OF_GPIO
> help
> OpenFirmware GPIO accessors
>
> +config OF_PWM
> + def_bool y
> + depends on PWM
> + help
> + OpenFirmware PWM accessors
> +
> config OF_I2C
> def_tristate I2C
> depends on I2C && !SPARC
> diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
> index 74dd295..c600606 100644
> --- a/drivers/pwm/core.c
> +++ b/drivers/pwm/core.c
> @@ -20,6 +20,7 @@
> */
>
> #include <linux/module.h>
> +#include <linux/of_pwm.h>
> #include <linux/pwm.h>
> #include <linux/radix-tree.h>
> #include <linux/list.h>
> @@ -121,6 +122,75 @@ static int pwm_device_request(struct pwm_device *pwm, const char *label)
> return 0;
> }
>
> +#ifdef CONFIG_OF_PWM
> +static struct pwm_chip *of_node_to_pwmchip(struct device_node *np)
> +{
> + struct pwm_chip *chip;
> +
> + mutex_lock(&pwm_lock);
> +
> + list_for_each_entry(chip, &pwm_chips, list)
> + if (chip->dev && chip->dev->of_node == np) {
> + mutex_unlock(&pwm_lock);
> + return chip;
> + }
> +
> + mutex_unlock(&pwm_lock);
> +
> + return ERR_PTR(-EPROBE_DEFER);
> +}
> +
> +static struct pwm_device *of_pwm_simple_xlate(struct pwm_chip *pc,
> + const struct of_phandle_args *args)
> +{
> + struct pwm_device *pwm;
> +
> + if (pc->of_pwm_n_cells < 2)
> + return ERR_PTR(-EINVAL);
> +
> + if (args->args_count < pc->of_pwm_n_cells)
> + return ERR_PTR(-EINVAL);
> +
> + if (args->args[0] >= pc->npwm)
> + return ERR_PTR(-EINVAL);
> +
> + pwm = pwm_request_from_device(pc->dev, args->args[0], NULL);
> + if (IS_ERR(pwm))
> + return ERR_PTR(-ENODEV);
> +
> + pwm_set_period(pwm, args->args[1]);
> +
> + return pwm;
> +}
> +
> +void of_pwmchip_add(struct pwm_chip *chip)
> +{
> + if (!chip->dev || !chip->dev->of_node)
> + return;
> +
> + if (!chip->of_xlate) {
> + chip->of_xlate = of_pwm_simple_xlate;
> + chip->of_pwm_n_cells = 2;
> + }
> +
> + of_node_get(chip->dev->of_node);
> +}
> +
> +void of_pwmchip_remove(struct pwm_chip *chip)
> +{
> + if (chip->dev && chip->dev->of_node)
> + of_node_put(chip->dev->of_node);
> +}
> +#else
> +static inline void of_pwmchip_add(struct pwm_chip *pc)
> +{
> +}
> +
> +static inline void of_pwmchip_remove(struct pwm_chip *pc)
> +{
> +}
> +#endif /* CONFIG_OF_PWM */
> +
> /**
> * pwm_set_chip_data - set private chip data for a PWM
> * @pwm: PWM device
> @@ -184,6 +254,7 @@ int pwmchip_add(struct pwm_chip *chip)
>
> INIT_LIST_HEAD(&chip->list);
> list_add(&chip->list, &pwm_chips);
> + of_pwmchip_add(chip);
>
> out:
> mutex_unlock(&pwm_lock);
> @@ -215,6 +286,7 @@ int pwmchip_remove(struct pwm_chip *chip)
> }
>
> list_del_init(&chip->list);
> + of_pwmchip_remove(chip);
> free_pwms(chip);
>
> out:
> @@ -364,6 +436,61 @@ void pwm_disable(struct pwm_device *pwm)
> }
> EXPORT_SYMBOL_GPL(pwm_disable);
>
> +#ifdef CONFIG_OF
> +/**
> + * of_pwm_request() - request a PWM via the PWM framework
> + * @np: device node to get the PWM from
> + * @propname: property name containing PWM specifier(s)
> + * @index: index of the PWM
> + *
> + * Returns the PWM device parsed from the phandle specified in the given
> + * property of a device tree node or NULL on failure. Values parsed from
> + * the device tree are stored in the returned PWM device object.
> + */
> +struct pwm_device *of_pwm_request(struct device_node *np,
> + const char *propname, int index)
> +{
> + struct pwm_device *pwm = NULL;
> + struct of_phandle_args args;
> + struct pwm_chip *pc;
> + int err;
> +
> + err = of_parse_phandle_with_args(np, propname, "#pwm-cells", index,
> + &args);
> + if (err) {
> + pr_debug("%s(): can't parse property \"%s\"\n", __func__,
> + propname);
> + return ERR_PTR(err);
> + }
> +
> + pc = of_node_to_pwmchip(args.np);
> + if (IS_ERR(pc)) {
> + pr_debug("%s(): PWM chip not found\n", __func__);
> + pwm = ERR_CAST(pc);
> + goto put;
> + }
> +
> + if (args.args_count != pc->of_pwm_n_cells) {
> + pr_debug("%s: wrong #pwm-cells for %s\n", np->full_name,
> + args.np->full_name);
> + pwm = ERR_PTR(-EINVAL);
> + goto put;
> + }
> +
> + pwm = pc->of_xlate(pc, &args);
> + if (IS_ERR(pwm))
> + goto put;
> +
> + pwm->label = np->name;
> +
> +put:
> + of_node_put(args.np);
> +
> + return pwm;
> +}
> +EXPORT_SYMBOL(of_pwm_request);
> +#endif
> +
> #ifdef CONFIG_DEBUG_FS
> static void pwm_dbg_show(struct pwm_chip *chip, struct seq_file *s)
> {
> diff --git a/include/linux/of_pwm.h b/include/linux/of_pwm.h
> new file mode 100644
> index 0000000..a3a3da7
> --- /dev/null
> +++ b/include/linux/of_pwm.h
> @@ -0,0 +1,36 @@
> +/*
> + * OF helpers for the PWM API
> + *
> + * Copyright (c) 2011-2012 Avionic Design GmbH
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#ifndef __LINUX_OF_PWM_H
> +#define __LINUX_OF_PWM_H
> +
> +#include <linux/err.h>
> +#include <linux/pwm.h>
> +
> +struct device_node;
> +
> +#ifdef CONFIG_OF_PWM
> +
> +struct pwm_device *of_pwm_request(struct device_node *np,
> + const char *propname, int index);
> +
> +#else
> +
> +static inline struct pwm_device *of_pwm_request(struct device_node *np,
> + const char *propname,
> + int index);
^^^
No semicolon here please.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2012-03-14 20:11 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-14 15:56 [PATCH v4 00/10] Add PWM framework and device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 01/10] PWM: add pwm framework support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-2-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-14 20:52 ` Lars-Peter Clausen
2012-03-14 20:52 ` Lars-Peter Clausen
[not found] ` <4F610517.7090006-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
2012-03-14 20:57 ` Thierry Reding
2012-03-14 20:57 ` Thierry Reding
2012-03-16 7:19 ` Shawn Guo
2012-03-16 7:19 ` Shawn Guo
[not found] ` <20120316071951.GB7758-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-03-16 7:28 ` Thierry Reding
2012-03-16 7:28 ` Thierry Reding
2012-03-20 1:55 ` Stephen Warren
2012-03-20 1:55 ` Stephen Warren
[not found] ` <4F67E38F.6080300-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 5:59 ` Thierry Reding
2012-03-20 5:59 ` Thierry Reding
[not found] ` <1331740593-10807-1-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-14 15:56 ` [PATCH v4 02/10] pwm: Allow chips to support multiple PWMs Thierry Reding
2012-03-14 15:56 ` Thierry Reding
2012-03-14 20:42 ` H Hartley Sweeten
2012-03-14 20:42 ` H Hartley Sweeten
2012-03-14 20:49 ` Thierry Reding
2012-03-14 20:49 ` Thierry Reding
2012-03-15 0:42 ` H Hartley Sweeten
2012-03-15 0:42 ` H Hartley Sweeten
2012-03-14 15:56 ` [PATCH v4 03/10] pwm: Add device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-4-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-14 20:11 ` Sascha Hauer [this message]
2012-03-14 20:11 ` Sascha Hauer
[not found] ` <20120314201138.GU3852-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-03-14 20:46 ` Thierry Reding
2012-03-14 20:46 ` Thierry Reding
2012-03-15 8:40 ` Arnd Bergmann
2012-03-15 8:40 ` Arnd Bergmann
[not found] ` <201203150840.42659.arnd-r2nGTMty4D4@public.gmane.org>
2012-03-15 10:29 ` Mark Brown
2012-03-15 10:29 ` Mark Brown
[not found] ` <20120315102944.GB3138-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2012-03-15 12:44 ` Arnd Bergmann
2012-03-15 12:44 ` Arnd Bergmann
2012-03-20 2:12 ` Stephen Warren
2012-03-20 2:12 ` Stephen Warren
[not found] ` <4F67E7A3.3090603-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 5:51 ` Thierry Reding
2012-03-20 5:51 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 04/10] ARM: tegra: Fix PWM clock programming Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-5-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-20 2:15 ` Stephen Warren
2012-03-20 2:15 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 05/10] ARM: tegra: Provide clock for only one PWM controller Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-6-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-20 2:18 ` Stephen Warren
2012-03-20 2:18 ` Stephen Warren
[not found] ` <4F67E8E4.7000604-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 8:44 ` Thierry Reding
2012-03-20 8:44 ` Thierry Reding
[not found] ` <20120320084403.GB20249-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-20 15:27 ` Stephen Warren
2012-03-20 15:27 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 06/10] pwm: Add NVIDIA Tegra SoC support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-7-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-16 8:00 ` Shawn Guo
2012-03-16 8:00 ` Shawn Guo
[not found] ` <20120316080025.GD7758-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-03-16 8:21 ` Thierry Reding
2012-03-16 8:21 ` Thierry Reding
2012-03-20 2:35 ` Stephen Warren
2012-03-20 2:35 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 07/10] pwm: tegra: Add device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-8-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-20 2:42 ` Stephen Warren
2012-03-20 2:42 ` Stephen Warren
[not found] ` <4F67EE9A.6080101-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 8:48 ` Thierry Reding
2012-03-20 8:48 ` Thierry Reding
[not found] ` <20120320084807.GC20249-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-20 15:33 ` Stephen Warren
2012-03-20 15:33 ` Stephen Warren
[not found] ` <4F68A32D.1000402-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 15:44 ` Thierry Reding
2012-03-20 15:44 ` Thierry Reding
2012-04-04 7:04 ` Shawn Guo
2012-04-04 7:04 ` Shawn Guo
[not found] ` <20120404070432.GF7264-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-04-04 18:33 ` Stephen Warren
2012-04-04 18:33 ` Stephen Warren
2012-03-14 15:56 ` [PATCH v4 08/10] pwm: Add Blackfin support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 09/10] pwm: Add PXA support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-10-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-15 0:13 ` Ryan Mallon
2012-03-15 0:13 ` Ryan Mallon
[not found] ` <4F61343A.80103-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-03-15 6:56 ` Thierry Reding
2012-03-15 6:56 ` Thierry Reding
[not found] ` <20120315065631.GB20502-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-03-15 9:05 ` Sascha Hauer
2012-03-15 9:05 ` Sascha Hauer
[not found] ` <20120315090540.GW3852-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-03-15 9:21 ` Thierry Reding
2012-03-15 9:21 ` Thierry Reding
[not found] ` <20120315092134.GA29841-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-15 9:45 ` Sascha Hauer
2012-03-15 9:45 ` Sascha Hauer
2012-03-16 8:12 ` Shawn Guo
2012-03-16 8:12 ` Shawn Guo
[not found] ` <20120316081222.GE7758-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-03-16 8:29 ` Thierry Reding
2012-03-16 8:29 ` Thierry Reding
2012-03-14 15:56 ` [PATCH v4 10/10] pwm-backlight: Add rudimentary device tree support Thierry Reding
2012-03-14 15:56 ` Thierry Reding
[not found] ` <1331740593-10807-11-git-send-email-thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
2012-03-15 8:48 ` Arnd Bergmann
2012-03-15 8:48 ` Arnd Bergmann
2012-03-20 2:59 ` Stephen Warren
2012-03-20 2:59 ` Stephen Warren
[not found] ` <4F67F2AF.3020404-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 8:39 ` Thierry Reding
2012-03-20 8:39 ` Thierry Reding
[not found] ` <20120320083943.GA20249-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-03-20 15:27 ` Stephen Warren
2012-03-20 15:27 ` Stephen Warren
[not found] ` <4F68A1C8.5080608-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 15:43 ` Thierry Reding
2012-03-20 15:43 ` Thierry Reding
[not found] ` <20120320154330.GA8651-RM9K5IK7kjIQXX3q8xo1gnVAuStQJXxyR5q1nwbD4aMs9pC9oP6+/A@public.gmane.org>
2012-03-20 15:56 ` Stephen Warren
2012-03-20 15:56 ` Stephen Warren
[not found] ` <4F68A899.3030009-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-03-20 16:08 ` Mark Brown
2012-03-20 16:08 ` Mark Brown
2012-03-14 23:19 ` [PATCH v4 00/10] Add PWM framework and " H Hartley Sweeten
2012-03-14 23:19 ` H Hartley Sweeten
2012-03-15 6:41 ` Thierry Reding
2012-03-15 6:41 ` Thierry Reding
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120314201138.GU3852@pengutronix.de \
--to=s.hauer-bicnvbalz9megne8c9+irq@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \
--cc=ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=eric.y.miao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
--cc=kurt.van.dijck-/BeEPy95v10@public.gmane.org \
--cc=lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=matthias-RprLehDfhQ3k1uMJSBkQmQ@public.gmane.org \
--cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
--cc=rmallon-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
--cc=rpurdie-Fm38FmjxZ/leoWH0uzbU5w@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
--cc=thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org \
--cc=vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org \
--cc=wmb-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.