From: plagnioj@jcrosoft.com (Jean-Christophe PLAGNIOL-VILLARD)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] pinctrl/nomadik: Add Device Tree support
Date: Thu, 13 Dec 2012 16:27:33 +0100 [thread overview]
Message-ID: <20121213152733.GE23971@game.jcrosoft.org> (raw)
In-Reply-To: <1355405825-19400-1-git-send-email-linus.walleij@stericsson.com>
On 14:37 Thu 13 Dec , Linus Walleij wrote:
> From: Gabriel Fernandez <gabriel.fernandez@stericsson.com>
>
> This implements pin multiplexing and pin configuration for the
> Nomadik pin controller using the device tree.
>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: devicetree-discuss at lists.ozlabs.org
> Signed-off-by: Gabriel Fernandez <gabriel.fernandez@stericsson.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> .../devicetree/bindings/pinctrl/ste,nomadik.txt | 111 +++++++++
> drivers/pinctrl/pinctrl-nomadik.c | 250 +++++++++++++++++++++
> 2 files changed, 361 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
> new file mode 100644
> index 0000000..02ff731
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
> @@ -0,0 +1,111 @@
> +ST Ericsson Nomadik pinmux controller
> +
> +Required properties:
> +- compatible: "stericsson,nmk_pinctrl"
> +- reg: Should contain the register physical address and length of the PRCMU.
> +
> +Please refer to pinctrl-bindings.txt in this directory for details of the
> +common pinctrl bindings used by client devices, including the meaning of the
> +phrase "pin configuration node".
> +
> +ST Ericsson's pin configuration nodes act as a container for an abitrary number of
> +subnodes. Each of these subnodes represents some desired configuration for a
> +pin, a group, or a list of pins or groups. This configuration can include the
> +mux function to select on those pin(s)/group(s), and various pin configuration
> +parameters, such as inputn output, pull up, pull down...
> +
> +The name of each subnode is not important; all subnodes should be enumerated
> +and processed purely based on their content.
> +
> +Required subnode-properties:
> +- ste,pins : An array of strings. Each string contains the name of a pin or
> + group.
> +
> +Optional subnode-properties:
> +- ste,function: A string containing the name of the function to mux to the
> + pin or group.
> +
> +- ste,input: no parameter, set pin in input with no pull mode.
> +- ste,input_pull_up: no parameter, set pin in input with pull up mode.
> +- ste,input_pull_down: no parameter, set pin in input with pull down mode.
> +
> +- ste,output: integer, 0: output low, 1: output high, 2: output (value is not specified).
> +- ste,sleep_mode: integer, 0: sleep mode disable, 1: sleep mode enable.
> +
> +- ste,sleep_input: no parameter, set pin in sleep input with no pull mode.
> +- ste,sleep_input_pull_up: no parameter, set pin in sleep input with pull up mode.
> +- ste,sleep_input_pull_down: no parameter, set pin in sleep input with pull down mode.
> +
> +- ste,sleep_output: integer, 0: sleep output low, 1: sleep output high, 2: sleep output (value is not specified).
> +
> +- ste,sleep_wakeup: interger, 0: disable sleep wakeup mode, 1: enable sleep wake up mode.
> +- ste,sleep_gpio: interger, 0: disable sleep gpio mode, 1: enable sleep gpio mode.
> +
> +- ste,sleep_pdis_mode: integer, 0: pdis disabled, 1: pdis enable.
> +
> +
> +Valid values for pin and group name are in Drivers/pinctrl/pinctrl-nomadik-db8500.c
> +
> +Example board file extract:
> +
> + pinctrl {
> + compatible = "stericsson,nmk_pinctrl";
> + reg = <0x80157000 0x2000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart0_default_mode>;
???
those 2 are wired
> +
> + uart0 {
> + uart0_default_mux: uart0_mux {
> + u0_default_mux {
> + ste,function = "u0";
> + ste,pins = "u0_a_1";
> + };
> + };
> + uart0_default_mode: uart0_default {
> + uart0_default_cfg1 {
> + ste,pins = "GPIO0", "GPIO2";
> + ste,input_pull_up;
> + };
> +
> + uart0_default_cfg2 {
> + ste,pins = "GPIO1", "GPIO3";
> + ste,output = <1>;
> + };
> + };
> + uart0_sleep_mode: uart0_sleep {
> + uart0_sleep_cfg1 {
> + ste,pins = "GPIO0", "GPIO2";
> + ste,sleep_mode = <0>;
> + ste,sleep_input;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
> + uart0_sleep_cfg2 {
> + ste,pins = "GPIO1";
> + ste,sleep_mode = <0>;
> + ste,sleep_output = <1>;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
> + uart0_sleep_cfg3 {
> + ste,pins = "GPIO3";
> + ste,sleep_mode = <0>;
> + ste,sleep_output = <2>;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
with such bindings you will endup with 1000s of node
take a loook on at91 how we did to avoid this
> + };
> + };
> + };
> +
> + uart at 80120000 {
> + compatible = "arm,pl011", "arm,primecell";
> + reg = <0x80120000 0x1000>;
> + interrupts = <0 11 0x4>;
> +
> + pinctrl-names = "default","sleep";
> + pinctrl-0 = <&uart0_default_mux>, <&uart0_default_mode>;
> + pinctrl-1 = <&uart0_sleep_mode>;
> + };
> +
> diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c
> index 1068faa..90b25ee 100644
> --- a/drivers/pinctrl/pinctrl-nomadik.c
> +++ b/drivers/pinctrl/pinctrl-nomadik.c
> @@ -25,6 +25,7 @@
> #include <linux/irqdomain.h>
> #include <linux/slab.h>
> #include <linux/of_device.h>
> +#include <linux/pinctrl/machine.h>
> #include <linux/pinctrl/pinctrl.h>
> #include <linux/pinctrl/pinmux.h>
> #include <linux/pinctrl/pinconf.h>
> @@ -1503,11 +1504,260 @@ static void nmk_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s,
> nmk_gpio_dbg_show_one(s, pctldev, chip, offset - chip->base, offset);
> }
>
> +static void nmk_pinctrl_dt_free_map(struct pinctrl_dev *pctldev,
> + struct pinctrl_map *map, unsigned num_maps)
> +{
> + int i;
> +
> + for (i = 0; i < num_maps; i++)
> + if (map[i].type == PIN_MAP_TYPE_CONFIGS_PIN)
> + kfree(map[i].data.configs.configs);
> + kfree(map);
> +}
> +
> +static int nmk_dt_reserve_map(struct pinctrl_map **map, unsigned *reserved_maps,
> + unsigned *num_maps, unsigned reserve)
> +{
> + unsigned old_num = *reserved_maps;
> + unsigned new_num = *num_maps + reserve;
> + struct pinctrl_map *new_map;
> +
> + if (old_num >= new_num)
> + return 0;
> +
> + new_map = krealloc(*map, sizeof(*new_map) * new_num, GFP_KERNEL);
> + if (!new_map)
> + return -ENOMEM;
devm_
> +
> + memset(new_map + old_num, 0, (new_num - old_num) * sizeof(*new_map));
> +
> + *map = new_map;
> + *reserved_maps = new_num;
> +
> + return 0;
> +}
> +
Best Regards,
J.
WARNING: multiple messages have this Message-ID (diff)
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: Linus Walleij <linus.walleij@stericsson.com>
Cc: Stephen Warren <swarren@nvidia.com>,
Gabriel Fernandez <gabriel.fernandez@stericsson.com>,
devicetree-discuss@lists.ozlabs.org,
linux-kernel@vger.kernel.org,
Anmar Oueja <anmar.oueja@linaro.org>,
Lee Jones <lee.jones@linaro.org>,
Linus Walleij <linus.walleij@linaro.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] pinctrl/nomadik: Add Device Tree support
Date: Thu, 13 Dec 2012 16:27:33 +0100 [thread overview]
Message-ID: <20121213152733.GE23971@game.jcrosoft.org> (raw)
In-Reply-To: <1355405825-19400-1-git-send-email-linus.walleij@stericsson.com>
On 14:37 Thu 13 Dec , Linus Walleij wrote:
> From: Gabriel Fernandez <gabriel.fernandez@stericsson.com>
>
> This implements pin multiplexing and pin configuration for the
> Nomadik pin controller using the device tree.
>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: devicetree-discuss@lists.ozlabs.org
> Signed-off-by: Gabriel Fernandez <gabriel.fernandez@stericsson.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> .../devicetree/bindings/pinctrl/ste,nomadik.txt | 111 +++++++++
> drivers/pinctrl/pinctrl-nomadik.c | 250 +++++++++++++++++++++
> 2 files changed, 361 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
> new file mode 100644
> index 0000000..02ff731
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
> @@ -0,0 +1,111 @@
> +ST Ericsson Nomadik pinmux controller
> +
> +Required properties:
> +- compatible: "stericsson,nmk_pinctrl"
> +- reg: Should contain the register physical address and length of the PRCMU.
> +
> +Please refer to pinctrl-bindings.txt in this directory for details of the
> +common pinctrl bindings used by client devices, including the meaning of the
> +phrase "pin configuration node".
> +
> +ST Ericsson's pin configuration nodes act as a container for an abitrary number of
> +subnodes. Each of these subnodes represents some desired configuration for a
> +pin, a group, or a list of pins or groups. This configuration can include the
> +mux function to select on those pin(s)/group(s), and various pin configuration
> +parameters, such as inputn output, pull up, pull down...
> +
> +The name of each subnode is not important; all subnodes should be enumerated
> +and processed purely based on their content.
> +
> +Required subnode-properties:
> +- ste,pins : An array of strings. Each string contains the name of a pin or
> + group.
> +
> +Optional subnode-properties:
> +- ste,function: A string containing the name of the function to mux to the
> + pin or group.
> +
> +- ste,input: no parameter, set pin in input with no pull mode.
> +- ste,input_pull_up: no parameter, set pin in input with pull up mode.
> +- ste,input_pull_down: no parameter, set pin in input with pull down mode.
> +
> +- ste,output: integer, 0: output low, 1: output high, 2: output (value is not specified).
> +- ste,sleep_mode: integer, 0: sleep mode disable, 1: sleep mode enable.
> +
> +- ste,sleep_input: no parameter, set pin in sleep input with no pull mode.
> +- ste,sleep_input_pull_up: no parameter, set pin in sleep input with pull up mode.
> +- ste,sleep_input_pull_down: no parameter, set pin in sleep input with pull down mode.
> +
> +- ste,sleep_output: integer, 0: sleep output low, 1: sleep output high, 2: sleep output (value is not specified).
> +
> +- ste,sleep_wakeup: interger, 0: disable sleep wakeup mode, 1: enable sleep wake up mode.
> +- ste,sleep_gpio: interger, 0: disable sleep gpio mode, 1: enable sleep gpio mode.
> +
> +- ste,sleep_pdis_mode: integer, 0: pdis disabled, 1: pdis enable.
> +
> +
> +Valid values for pin and group name are in Drivers/pinctrl/pinctrl-nomadik-db8500.c
> +
> +Example board file extract:
> +
> + pinctrl {
> + compatible = "stericsson,nmk_pinctrl";
> + reg = <0x80157000 0x2000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart0_default_mode>;
???
those 2 are wired
> +
> + uart0 {
> + uart0_default_mux: uart0_mux {
> + u0_default_mux {
> + ste,function = "u0";
> + ste,pins = "u0_a_1";
> + };
> + };
> + uart0_default_mode: uart0_default {
> + uart0_default_cfg1 {
> + ste,pins = "GPIO0", "GPIO2";
> + ste,input_pull_up;
> + };
> +
> + uart0_default_cfg2 {
> + ste,pins = "GPIO1", "GPIO3";
> + ste,output = <1>;
> + };
> + };
> + uart0_sleep_mode: uart0_sleep {
> + uart0_sleep_cfg1 {
> + ste,pins = "GPIO0", "GPIO2";
> + ste,sleep_mode = <0>;
> + ste,sleep_input;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
> + uart0_sleep_cfg2 {
> + ste,pins = "GPIO1";
> + ste,sleep_mode = <0>;
> + ste,sleep_output = <1>;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
> + uart0_sleep_cfg3 {
> + ste,pins = "GPIO3";
> + ste,sleep_mode = <0>;
> + ste,sleep_output = <2>;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
with such bindings you will endup with 1000s of node
take a loook on at91 how we did to avoid this
> + };
> + };
> + };
> +
> + uart@80120000 {
> + compatible = "arm,pl011", "arm,primecell";
> + reg = <0x80120000 0x1000>;
> + interrupts = <0 11 0x4>;
> +
> + pinctrl-names = "default","sleep";
> + pinctrl-0 = <&uart0_default_mux>, <&uart0_default_mode>;
> + pinctrl-1 = <&uart0_sleep_mode>;
> + };
> +
> diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c
> index 1068faa..90b25ee 100644
> --- a/drivers/pinctrl/pinctrl-nomadik.c
> +++ b/drivers/pinctrl/pinctrl-nomadik.c
> @@ -25,6 +25,7 @@
> #include <linux/irqdomain.h>
> #include <linux/slab.h>
> #include <linux/of_device.h>
> +#include <linux/pinctrl/machine.h>
> #include <linux/pinctrl/pinctrl.h>
> #include <linux/pinctrl/pinmux.h>
> #include <linux/pinctrl/pinconf.h>
> @@ -1503,11 +1504,260 @@ static void nmk_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s,
> nmk_gpio_dbg_show_one(s, pctldev, chip, offset - chip->base, offset);
> }
>
> +static void nmk_pinctrl_dt_free_map(struct pinctrl_dev *pctldev,
> + struct pinctrl_map *map, unsigned num_maps)
> +{
> + int i;
> +
> + for (i = 0; i < num_maps; i++)
> + if (map[i].type == PIN_MAP_TYPE_CONFIGS_PIN)
> + kfree(map[i].data.configs.configs);
> + kfree(map);
> +}
> +
> +static int nmk_dt_reserve_map(struct pinctrl_map **map, unsigned *reserved_maps,
> + unsigned *num_maps, unsigned reserve)
> +{
> + unsigned old_num = *reserved_maps;
> + unsigned new_num = *num_maps + reserve;
> + struct pinctrl_map *new_map;
> +
> + if (old_num >= new_num)
> + return 0;
> +
> + new_map = krealloc(*map, sizeof(*new_map) * new_num, GFP_KERNEL);
> + if (!new_map)
> + return -ENOMEM;
devm_
> +
> + memset(new_map + old_num, 0, (new_num - old_num) * sizeof(*new_map));
> +
> + *map = new_map;
> + *reserved_maps = new_num;
> +
> + return 0;
> +}
> +
Best Regards,
J.
WARNING: multiple messages have this Message-ID (diff)
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: Linus Walleij <linus.walleij@stericsson.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Stephen Warren <swarren@nvidia.com>,
Gabriel Fernandez <gabriel.fernandez@stericsson.com>,
devicetree-discuss@lists.ozlabs.org,
Anmar Oueja <anmar.oueja@linaro.org>,
Lee Jones <lee.jones@linaro.org>,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH] pinctrl/nomadik: Add Device Tree support
Date: Thu, 13 Dec 2012 16:27:33 +0100 [thread overview]
Message-ID: <20121213152733.GE23971@game.jcrosoft.org> (raw)
In-Reply-To: <1355405825-19400-1-git-send-email-linus.walleij@stericsson.com>
On 14:37 Thu 13 Dec , Linus Walleij wrote:
> From: Gabriel Fernandez <gabriel.fernandez@stericsson.com>
>
> This implements pin multiplexing and pin configuration for the
> Nomadik pin controller using the device tree.
>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: devicetree-discuss@lists.ozlabs.org
> Signed-off-by: Gabriel Fernandez <gabriel.fernandez@stericsson.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> .../devicetree/bindings/pinctrl/ste,nomadik.txt | 111 +++++++++
> drivers/pinctrl/pinctrl-nomadik.c | 250 +++++++++++++++++++++
> 2 files changed, 361 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
> new file mode 100644
> index 0000000..02ff731
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt
> @@ -0,0 +1,111 @@
> +ST Ericsson Nomadik pinmux controller
> +
> +Required properties:
> +- compatible: "stericsson,nmk_pinctrl"
> +- reg: Should contain the register physical address and length of the PRCMU.
> +
> +Please refer to pinctrl-bindings.txt in this directory for details of the
> +common pinctrl bindings used by client devices, including the meaning of the
> +phrase "pin configuration node".
> +
> +ST Ericsson's pin configuration nodes act as a container for an abitrary number of
> +subnodes. Each of these subnodes represents some desired configuration for a
> +pin, a group, or a list of pins or groups. This configuration can include the
> +mux function to select on those pin(s)/group(s), and various pin configuration
> +parameters, such as inputn output, pull up, pull down...
> +
> +The name of each subnode is not important; all subnodes should be enumerated
> +and processed purely based on their content.
> +
> +Required subnode-properties:
> +- ste,pins : An array of strings. Each string contains the name of a pin or
> + group.
> +
> +Optional subnode-properties:
> +- ste,function: A string containing the name of the function to mux to the
> + pin or group.
> +
> +- ste,input: no parameter, set pin in input with no pull mode.
> +- ste,input_pull_up: no parameter, set pin in input with pull up mode.
> +- ste,input_pull_down: no parameter, set pin in input with pull down mode.
> +
> +- ste,output: integer, 0: output low, 1: output high, 2: output (value is not specified).
> +- ste,sleep_mode: integer, 0: sleep mode disable, 1: sleep mode enable.
> +
> +- ste,sleep_input: no parameter, set pin in sleep input with no pull mode.
> +- ste,sleep_input_pull_up: no parameter, set pin in sleep input with pull up mode.
> +- ste,sleep_input_pull_down: no parameter, set pin in sleep input with pull down mode.
> +
> +- ste,sleep_output: integer, 0: sleep output low, 1: sleep output high, 2: sleep output (value is not specified).
> +
> +- ste,sleep_wakeup: interger, 0: disable sleep wakeup mode, 1: enable sleep wake up mode.
> +- ste,sleep_gpio: interger, 0: disable sleep gpio mode, 1: enable sleep gpio mode.
> +
> +- ste,sleep_pdis_mode: integer, 0: pdis disabled, 1: pdis enable.
> +
> +
> +Valid values for pin and group name are in Drivers/pinctrl/pinctrl-nomadik-db8500.c
> +
> +Example board file extract:
> +
> + pinctrl {
> + compatible = "stericsson,nmk_pinctrl";
> + reg = <0x80157000 0x2000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart0_default_mode>;
???
those 2 are wired
> +
> + uart0 {
> + uart0_default_mux: uart0_mux {
> + u0_default_mux {
> + ste,function = "u0";
> + ste,pins = "u0_a_1";
> + };
> + };
> + uart0_default_mode: uart0_default {
> + uart0_default_cfg1 {
> + ste,pins = "GPIO0", "GPIO2";
> + ste,input_pull_up;
> + };
> +
> + uart0_default_cfg2 {
> + ste,pins = "GPIO1", "GPIO3";
> + ste,output = <1>;
> + };
> + };
> + uart0_sleep_mode: uart0_sleep {
> + uart0_sleep_cfg1 {
> + ste,pins = "GPIO0", "GPIO2";
> + ste,sleep_mode = <0>;
> + ste,sleep_input;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
> + uart0_sleep_cfg2 {
> + ste,pins = "GPIO1";
> + ste,sleep_mode = <0>;
> + ste,sleep_output = <1>;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
> + uart0_sleep_cfg3 {
> + ste,pins = "GPIO3";
> + ste,sleep_mode = <0>;
> + ste,sleep_output = <2>;
> + ste,sleep_wakeup_mode = <1>;
> + ste,sleep_pdis_mode = <0>;
> + };
with such bindings you will endup with 1000s of node
take a loook on at91 how we did to avoid this
> + };
> + };
> + };
> +
> + uart@80120000 {
> + compatible = "arm,pl011", "arm,primecell";
> + reg = <0x80120000 0x1000>;
> + interrupts = <0 11 0x4>;
> +
> + pinctrl-names = "default","sleep";
> + pinctrl-0 = <&uart0_default_mux>, <&uart0_default_mode>;
> + pinctrl-1 = <&uart0_sleep_mode>;
> + };
> +
> diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c
> index 1068faa..90b25ee 100644
> --- a/drivers/pinctrl/pinctrl-nomadik.c
> +++ b/drivers/pinctrl/pinctrl-nomadik.c
> @@ -25,6 +25,7 @@
> #include <linux/irqdomain.h>
> #include <linux/slab.h>
> #include <linux/of_device.h>
> +#include <linux/pinctrl/machine.h>
> #include <linux/pinctrl/pinctrl.h>
> #include <linux/pinctrl/pinmux.h>
> #include <linux/pinctrl/pinconf.h>
> @@ -1503,11 +1504,260 @@ static void nmk_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s,
> nmk_gpio_dbg_show_one(s, pctldev, chip, offset - chip->base, offset);
> }
>
> +static void nmk_pinctrl_dt_free_map(struct pinctrl_dev *pctldev,
> + struct pinctrl_map *map, unsigned num_maps)
> +{
> + int i;
> +
> + for (i = 0; i < num_maps; i++)
> + if (map[i].type == PIN_MAP_TYPE_CONFIGS_PIN)
> + kfree(map[i].data.configs.configs);
> + kfree(map);
> +}
> +
> +static int nmk_dt_reserve_map(struct pinctrl_map **map, unsigned *reserved_maps,
> + unsigned *num_maps, unsigned reserve)
> +{
> + unsigned old_num = *reserved_maps;
> + unsigned new_num = *num_maps + reserve;
> + struct pinctrl_map *new_map;
> +
> + if (old_num >= new_num)
> + return 0;
> +
> + new_map = krealloc(*map, sizeof(*new_map) * new_num, GFP_KERNEL);
> + if (!new_map)
> + return -ENOMEM;
devm_
> +
> + memset(new_map + old_num, 0, (new_num - old_num) * sizeof(*new_map));
> +
> + *map = new_map;
> + *reserved_maps = new_num;
> +
> + return 0;
> +}
> +
Best Regards,
J.
next prev parent reply other threads:[~2012-12-13 15:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-13 13:37 [PATCH] pinctrl/nomadik: Add Device Tree support Linus Walleij
2012-12-13 13:37 ` Linus Walleij
2012-12-13 13:37 ` Linus Walleij
2012-12-13 15:27 ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2012-12-13 15:27 ` Jean-Christophe PLAGNIOL-VILLARD
2012-12-13 15:27 ` Jean-Christophe PLAGNIOL-VILLARD
2012-12-13 19:08 ` Stephen Warren
2012-12-13 19:08 ` Stephen Warren
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=20121213152733.GE23971@game.jcrosoft.org \
--to=plagnioj@jcrosoft.com \
--cc=linux-arm-kernel@lists.infradead.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.