* [PATCH 1/9] sh-pfc: Add OF support [not found] <1357260060-32164-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com> @ 2013-01-04 0:40 ` Laurent Pinchart 2013-01-04 1:12 ` Tony Prisk 0 siblings, 1 reply; 5+ messages in thread From: Laurent Pinchart @ 2013-01-04 0:40 UTC (permalink / raw) To: linux-sh Cc: Paul Mundt, Magnus Damm, Simon Horman, Linus Walleij, Kuninori Morimoto, Phil Edworthy, Nobuhiro Iwamatsu, Guennadi Liakhovetski, devicetree-discuss Support device instantiation through the device tree. The compatible property is used to select the SoC pinmux information. Set the gpio_chip device field to the PFC device to enable automatic GPIO OF support. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Cc: devicetree-discuss@lists.ozlabs.org --- .../bindings/pinctrl/renesas,pfc-pinctrl.txt | 76 ++++++++++++++++++++ drivers/pinctrl/sh-pfc/core.c | 62 +++++++++++++++- drivers/pinctrl/sh-pfc/pinctrl.c | 54 ++++++++++++++ 3 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt (Comment from the cover letter repeated here) To be perfectly honest I'm a bit unsure about the DT bindings. The platforms that implement pinctrl DT bindings use a wide variety of architectures. I haven't found clear guidelines regarding how those bindings should be implemented (Documentation/devicetree/pinctrl just states that bindings are driver-specific). Comments will be appreciated. diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt new file mode 100644 index 0000000..aa41bbe --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt @@ -0,0 +1,76 @@ +* Renesas GPIO and Pin Mux/Config controller + +Required Properties: +- compatible: should be one of the following. + - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. + - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. + - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller. + - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. + +- reg: Base address and length of each memory resource used by the pin + controller hardware module. + +- gpio-controller: Marks the device node as a gpio controller. + +- #gpio-cells: Should be 2. The first cell is the pin number and the second cell + is used to specify optional parameters (currently unused). + + +The PFC node also acts as a container for pin control maps represented as +subnodes. Each subnode contains a function name and one or more pin or pin group +name. The subnode names are ignored, all subnodes are parsed through phandles +and processed purely based on their content. + +Required Subnode Properties: +- renesas,pins : An array of strings. Each string contains the name of a pin or + pin group. +- renesas,function: A string containing the name of the function to mux to the + pin or pin group. + + Valid values for group and function names can be found in the group and + function arrays of the PFC data file corresponding to the SoC + (drivers/pinctrl/spear/pfc-*.c) + +Please refer to pinctrl-bindings.txt in this directory for details of the common +pinctrl bindings used by client devices. + + +The syntax of the gpio specifier used by client nodes should be the following +with values derived from the SoC user manual. + + <[phandle of the gpio controller node] + [pin number within the gpio controller] + [flags and pull up/down]> + + +Example 1: SH73A0 (SH-Mobile AG5) pin controller node + + gpio: pfc@e6050000 { + compatible = "renesas,pfc-sh73a0"; + reg = <0xe6050000 0x8000>, + <0xe605801c 0x1c>; + gpio-controller; + #gpio-cells = <2>; + }; + +Example 2: A GPIO LED node that references a GPIO + + leds { + compatible = "gpio-leds"; + led1 { + gpios = <&gpio 20 1>; /* Active low */ + }; + }; + +Example 3: KZM-A9-GT (SH-Mobile AG5) default pin state and pin control maps + for the LCD device + + &gpio { + pinctrl-0 = <&lcd_pins>; + pinctrl-names = "default"; + + lcd_pins: pfc_lcd_pins { + renesas,pins = "lcd_data24", "lcd_sync"; + renesas,function = "lcd"; + }; + }; diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c index 912b579..d0e8e77 100644 --- a/drivers/pinctrl/sh-pfc/core.c +++ b/drivers/pinctrl/sh-pfc/core.c @@ -19,6 +19,7 @@ #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/module.h> +#include <linux/of_device.h> #include <linux/pinctrl/machine.h> #include <linux/platform_device.h> #include <linux/slab.h> @@ -510,8 +511,55 @@ int sh_pfc_config_gpio(struct sh_pfc *pfc, unsigned gpio, int pinmux_type, return sh_pfc_config_mux(pfc, mark, pinmux_type, cfg_mode); } +#ifdef CONFIG_OF +static const struct of_device_id sh_pfc_of_table[] = { +#ifdef CONFIG_PINCTRL_PFC_R8A7740 + { + .compatible = "renesas,pfc-r8a7740", + .data = &r8a7740_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_R8A7779 + { + .compatible = "renesas,pfc-r8a7779", + .data = &r8a7779_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH7367 + { + .compatible = "renesas,pfc-sh7367", + .data = &sh7367_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH7372 + { + .compatible = "renesas,pfc-sh7372", + .data = &sh7372_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH7377 + { + .compatible = "renesas,pfc-sh7377", + .data = &sh7377_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH73A0 + { + .compatible = "renesas,pfc-sh73a0", + .data = &sh73a0_pinmux_info, + }, +#endif + { }, +}; +MODULE_DEVICE_TABLE(of, sh_pfc_of_table); +#endif + static int sh_pfc_probe(struct platform_device *pdev) { + const struct platform_device_id *platid = platform_get_device_id(pdev); +#ifdef CONFIG_OF + struct device_node *np = pdev->dev.of_node; +#endif struct sh_pfc_soc_info *info; struct sh_pfc *pfc; int ret; @@ -521,8 +569,15 @@ static int sh_pfc_probe(struct platform_device *pdev) */ BUILD_BUG_ON(PINMUX_FLAG_TYPE > ((1 << PINMUX_FLAG_DBIT_SHIFT) - 1)); - info = pdev->id_entry->driver_data - ? (void *)pdev->id_entry->driver_data : pdev->dev.platform_data; + if (platid) + info = (void *)platid->driver_data; +#ifdef CONFIG_OF + else if (np) + info = (void *)of_match_device(sh_pfc_of_table, &pdev->dev)->data; +#endif + else + info = pdev->dev.platform_data; + if (info == NULL) return -ENODEV; @@ -646,6 +701,9 @@ static struct platform_driver sh_pfc_driver = { .driver = { .name = DRV_NAME, .owner = THIS_MODULE, +#ifdef CONFIG_OF + .of_match_table = sh_pfc_of_table, +#endif }, }; diff --git a/drivers/pinctrl/sh-pfc/pinctrl.c b/drivers/pinctrl/sh-pfc/pinctrl.c index 6ee4105..78b78d2 100644 --- a/drivers/pinctrl/sh-pfc/pinctrl.c +++ b/drivers/pinctrl/sh-pfc/pinctrl.c @@ -15,7 +15,9 @@ #include <linux/err.h> #include <linux/init.h> #include <linux/module.h> +#include <linux/of.h> #include <linux/pinctrl/consumer.h> +#include <linux/pinctrl/machine.h> #include <linux/pinctrl/pinconf.h> #include <linux/pinctrl/pinconf-generic.h> #include <linux/pinctrl/pinctrl.h> @@ -65,11 +67,63 @@ static void sh_pfc_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s, seq_printf(s, "%s", DRV_NAME); } +static int sh_pfc_dt_node_to_map(struct pinctrl_dev *pctldev, + struct device_node *np, + struct pinctrl_map **map, unsigned *num_maps) +{ + struct sh_pfc_pinctrl *pmx = pinctrl_dev_get_drvdata(pctldev); + struct pinctrl_map *maps; + struct property *prop; + unsigned int index = 0; + const char *function; + const char *group; + int ret; + + ret = of_property_read_string(np, "renesas,function", &function); + if (ret < 0) { + dev_err(pmx->pfc->dev, "No function provided in DT\n"); + return ret; + } + + ret = of_property_count_strings(np, "renesas,pins"); + if (ret < 0) + return ret; + + if (!ret) { + dev_err(pmx->pfc->dev, "No pin(group) provided in DT node\n"); + return -ENODEV; + } + + maps = kzalloc(sizeof(*maps) * ret, GFP_KERNEL); + if (maps == NULL) + return -ENOMEM; + + of_property_for_each_string(np, "renesas,pins", prop, group) { + maps[index].type = PIN_MAP_TYPE_MUX_GROUP; + maps[index].data.mux.group = group; + maps[index].data.mux.function = function; + index++; + } + + *map = maps; + *num_maps = index; + + return 0; +} + +static void sh_pfc_dt_free_map(struct pinctrl_dev *pctldev, + struct pinctrl_map *map, unsigned num_maps) +{ + kfree(map); +} + static struct pinctrl_ops sh_pfc_pinctrl_ops = { .get_groups_count = sh_pfc_get_groups_count, .get_group_name = sh_pfc_get_group_name, .get_group_pins = sh_pfc_get_group_pins, .pin_dbg_show = sh_pfc_pin_dbg_show, + .dt_node_to_map = sh_pfc_dt_node_to_map, + .dt_free_map = sh_pfc_dt_free_map, }; static int sh_pfc_get_functions_count(struct pinctrl_dev *pctldev) -- 1.7.8.6 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/9] sh-pfc: Add OF support 2013-01-04 0:40 ` [PATCH 1/9] sh-pfc: Add OF support Laurent Pinchart @ 2013-01-04 1:12 ` Tony Prisk 2013-01-07 18:56 ` Laurent Pinchart 0 siblings, 1 reply; 5+ messages in thread From: Tony Prisk @ 2013-01-04 1:12 UTC (permalink / raw) To: Laurent Pinchart Cc: linux-sh, Simon Horman, Phil Edworthy, Kuninori Morimoto, devicetree-discuss, Magnus Damm, Paul Mundt, Nobuhiro Iwamatsu, Guennadi Liakhovetski On Fri, 2013-01-04 at 01:40 +0100, Laurent Pinchart wrote: > +- #gpio-cells: Should be 2. The first cell is the pin number and the second cell > + is used to specify optional parameters (currently unused). ... > + gpio: pfc@e6050000 { > + compatible = "renesas,pfc-sh73a0"; > + reg = <0xe6050000 0x8000>, > + <0xe605801c 0x1c>; > + gpio-controller; > + #gpio-cells = <2>; > + }; > + > +Example 2: A GPIO LED node that references a GPIO > + > + leds { > + compatible = "gpio-leds"; > + led1 { > + gpios = <&gpio 20 1>; /* Active low */ > + }; > + }; > + The second cell of gpio is '(currently unused)' but the example shows it being used? Regards Tony Prisk ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/9] sh-pfc: Add OF support 2013-01-04 1:12 ` Tony Prisk @ 2013-01-07 18:56 ` Laurent Pinchart 0 siblings, 0 replies; 5+ messages in thread From: Laurent Pinchart @ 2013-01-07 18:56 UTC (permalink / raw) To: Tony Prisk Cc: Laurent Pinchart, linux-sh, Simon Horman, Phil Edworthy, Kuninori Morimoto, devicetree-discuss, Magnus Damm, Paul Mundt, Nobuhiro Iwamatsu, Guennadi Liakhovetski Hi Tony, On Friday 04 January 2013 14:12:06 Tony Prisk wrote: > On Fri, 2013-01-04 at 01:40 +0100, Laurent Pinchart wrote: > > +- #gpio-cells: Should be 2. The first cell is the pin number and the > > second cell > > + is used to specify optional parameters (currently unused). > > ... > > > + gpio: pfc@e6050000 { > > + compatible = "renesas,pfc-sh73a0"; > > + reg = <0xe6050000 0x8000>, > > + <0xe605801c 0x1c>; > > + gpio-controller; > > + #gpio-cells = <2>; > > + }; > > + > > +Example 2: A GPIO LED node that references a GPIO > > + > > + leds { > > + compatible = "gpio-leds"; > > + led1 { > > + gpios = <&gpio 20 1>; /* Active low */ > > + }; > > + }; > > + > > The second cell of gpio is '(currently unused)' but the example shows it > being used? My bad. The second cell can be used to specify that the GPIO is active low. I'll fix the documentation accordingly. -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <1360726161-16072-1-git-send-email-horms+renesas@verge.net.au>]
[parent not found: <1360726161-16072-1-git-send-email-horms+renesas-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>]
* [PATCH 1/9] sh-pfc: Add OF support [not found] ` <1360726161-16072-1-git-send-email-horms+renesas-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org> @ 2013-02-13 3:29 ` Simon Horman 2013-02-15 19:37 ` Linus Walleij 0 siblings, 1 reply; 5+ messages in thread From: Simon Horman @ 2013-02-13 3:29 UTC (permalink / raw) To: linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Cc: Phil Edworthy, Laurent Pinchart, Kuninori Morimoto, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Magnus Damm, Simon Horman, Nobuhiro Iwamatsu, Guennadi Liakhovetski From: Laurent Pinchart <laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org> Support device instantiation through the device tree. The compatible property is used to select the SoC pinmux information. Set the gpio_chip device field to the PFC device to enable automatic GPIO OF support. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org> Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Signed-off-by: Simon Horman <horms+renesas-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org> --- .../bindings/pinctrl/renesas,pfc-pinctrl.txt | 77 ++++++++++++++++++++ drivers/pinctrl/sh-pfc/core.c | 62 +++++++++++++++- drivers/pinctrl/sh-pfc/pinctrl.c | 54 ++++++++++++++ 3 files changed, 191 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt new file mode 100644 index 0000000..77752c2 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt @@ -0,0 +1,77 @@ +* Renesas GPIO and Pin Mux/Config controller + +Required Properties: +- compatible: should be one of the following. + - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. + - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. + - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller. + - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. + +- reg: Base address and length of each memory resource used by the pin + controller hardware module. + +- gpio-controller: Marks the device node as a gpio controller. + +- #gpio-cells: Should be 2. The first cell is the pin number and the second cell + is used to specify optional parameters as bit flags. Only the GPIO active low + flag (bit 0) is currently supported. + + +The PFC node also acts as a container for pin control maps represented as +subnodes. Each subnode contains a function name and one or more pin or pin group +name. The subnode names are ignored, all subnodes are parsed through phandles +and processed purely based on their content. + +Required Subnode Properties: +- renesas,pins : An array of strings. Each string contains the name of a pin or + pin group. +- renesas,function: A string containing the name of the function to mux to the + pin or pin group. + + Valid values for group and function names can be found in the group and + function arrays of the PFC data file corresponding to the SoC + (drivers/pinctrl/spear/pfc-*.c) + +Please refer to pinctrl-bindings.txt in this directory for details of the common +pinctrl bindings used by client devices. + + +The syntax of the gpio specifier used by client nodes should be the following +with values derived from the SoC user manual. + + <[phandle of the gpio controller node] + [pin number within the gpio controller] + [flags and pull up/down]> + + +Example 1: SH73A0 (SH-Mobile AG5) pin controller node + + gpio: pfc@e6050000 { + compatible = "renesas,pfc-sh73a0"; + reg = <0xe6050000 0x8000>, + <0xe605801c 0x1c>; + gpio-controller; + #gpio-cells = <2>; + }; + +Example 2: A GPIO LED node that references a GPIO + + leds { + compatible = "gpio-leds"; + led1 { + gpios = <&gpio 20 1>; /* Active low */ + }; + }; + +Example 3: KZM-A9-GT (SH-Mobile AG5) default pin state and pin control maps + for the LCD device + + &gpio { + pinctrl-0 = <&lcd_pins>; + pinctrl-names = "default"; + + lcd_pins: pfc_lcd_pins { + renesas,pins = "lcd_data24", "lcd_sync"; + renesas,function = "lcd"; + }; + }; diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c index 912b579..d0e8e77 100644 --- a/drivers/pinctrl/sh-pfc/core.c +++ b/drivers/pinctrl/sh-pfc/core.c @@ -19,6 +19,7 @@ #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/module.h> +#include <linux/of_device.h> #include <linux/pinctrl/machine.h> #include <linux/platform_device.h> #include <linux/slab.h> @@ -510,8 +511,55 @@ int sh_pfc_config_gpio(struct sh_pfc *pfc, unsigned gpio, int pinmux_type, return sh_pfc_config_mux(pfc, mark, pinmux_type, cfg_mode); } +#ifdef CONFIG_OF +static const struct of_device_id sh_pfc_of_table[] = { +#ifdef CONFIG_PINCTRL_PFC_R8A7740 + { + .compatible = "renesas,pfc-r8a7740", + .data = &r8a7740_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_R8A7779 + { + .compatible = "renesas,pfc-r8a7779", + .data = &r8a7779_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH7367 + { + .compatible = "renesas,pfc-sh7367", + .data = &sh7367_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH7372 + { + .compatible = "renesas,pfc-sh7372", + .data = &sh7372_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH7377 + { + .compatible = "renesas,pfc-sh7377", + .data = &sh7377_pinmux_info, + }, +#endif +#ifdef CONFIG_PINCTRL_PFC_SH73A0 + { + .compatible = "renesas,pfc-sh73a0", + .data = &sh73a0_pinmux_info, + }, +#endif + { }, +}; +MODULE_DEVICE_TABLE(of, sh_pfc_of_table); +#endif + static int sh_pfc_probe(struct platform_device *pdev) { + const struct platform_device_id *platid = platform_get_device_id(pdev); +#ifdef CONFIG_OF + struct device_node *np = pdev->dev.of_node; +#endif struct sh_pfc_soc_info *info; struct sh_pfc *pfc; int ret; @@ -521,8 +569,15 @@ static int sh_pfc_probe(struct platform_device *pdev) */ BUILD_BUG_ON(PINMUX_FLAG_TYPE > ((1 << PINMUX_FLAG_DBIT_SHIFT) - 1)); - info = pdev->id_entry->driver_data - ? (void *)pdev->id_entry->driver_data : pdev->dev.platform_data; + if (platid) + info = (void *)platid->driver_data; +#ifdef CONFIG_OF + else if (np) + info = (void *)of_match_device(sh_pfc_of_table, &pdev->dev)->data; +#endif + else + info = pdev->dev.platform_data; + if (info == NULL) return -ENODEV; @@ -646,6 +701,9 @@ static struct platform_driver sh_pfc_driver = { .driver = { .name = DRV_NAME, .owner = THIS_MODULE, +#ifdef CONFIG_OF + .of_match_table = sh_pfc_of_table, +#endif }, }; diff --git a/drivers/pinctrl/sh-pfc/pinctrl.c b/drivers/pinctrl/sh-pfc/pinctrl.c index 6ee4105..78b78d2 100644 --- a/drivers/pinctrl/sh-pfc/pinctrl.c +++ b/drivers/pinctrl/sh-pfc/pinctrl.c @@ -15,7 +15,9 @@ #include <linux/err.h> #include <linux/init.h> #include <linux/module.h> +#include <linux/of.h> #include <linux/pinctrl/consumer.h> +#include <linux/pinctrl/machine.h> #include <linux/pinctrl/pinconf.h> #include <linux/pinctrl/pinconf-generic.h> #include <linux/pinctrl/pinctrl.h> @@ -65,11 +67,63 @@ static void sh_pfc_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s, seq_printf(s, "%s", DRV_NAME); } +static int sh_pfc_dt_node_to_map(struct pinctrl_dev *pctldev, + struct device_node *np, + struct pinctrl_map **map, unsigned *num_maps) +{ + struct sh_pfc_pinctrl *pmx = pinctrl_dev_get_drvdata(pctldev); + struct pinctrl_map *maps; + struct property *prop; + unsigned int index = 0; + const char *function; + const char *group; + int ret; + + ret = of_property_read_string(np, "renesas,function", &function); + if (ret < 0) { + dev_err(pmx->pfc->dev, "No function provided in DT\n"); + return ret; + } + + ret = of_property_count_strings(np, "renesas,pins"); + if (ret < 0) + return ret; + + if (!ret) { + dev_err(pmx->pfc->dev, "No pin(group) provided in DT node\n"); + return -ENODEV; + } + + maps = kzalloc(sizeof(*maps) * ret, GFP_KERNEL); + if (maps == NULL) + return -ENOMEM; + + of_property_for_each_string(np, "renesas,pins", prop, group) { + maps[index].type = PIN_MAP_TYPE_MUX_GROUP; + maps[index].data.mux.group = group; + maps[index].data.mux.function = function; + index++; + } + + *map = maps; + *num_maps = index; + + return 0; +} + +static void sh_pfc_dt_free_map(struct pinctrl_dev *pctldev, + struct pinctrl_map *map, unsigned num_maps) +{ + kfree(map); +} + static struct pinctrl_ops sh_pfc_pinctrl_ops = { .get_groups_count = sh_pfc_get_groups_count, .get_group_name = sh_pfc_get_group_name, .get_group_pins = sh_pfc_get_group_pins, .pin_dbg_show = sh_pfc_pin_dbg_show, + .dt_node_to_map = sh_pfc_dt_node_to_map, + .dt_free_map = sh_pfc_dt_free_map, }; static int sh_pfc_get_functions_count(struct pinctrl_dev *pctldev) -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/9] sh-pfc: Add OF support 2013-02-13 3:29 ` Simon Horman @ 2013-02-15 19:37 ` Linus Walleij 0 siblings, 0 replies; 5+ messages in thread From: Linus Walleij @ 2013-02-15 19:37 UTC (permalink / raw) To: Simon Horman Cc: linux-sh, linux-arm-kernel, Laurent Pinchart, Guennadi Liakhovetski, Magnus Damm, Kuninori Morimoto, Phil Edworthy, Nobuhiro Iwamatsu, devicetree-discuss On Wed, Feb 13, 2013 at 4:29 AM, Simon Horman <horms+renesas@verge.net.au> wrote: > From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > > Support device instantiation through the device tree. The compatible > property is used to select the SoC pinmux information. > > Set the gpio_chip device field to the PFC device to enable automatic > GPIO OF support. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > Cc: devicetree-discuss@lists.ozlabs.org > Signed-off-by: Simon Horman <horms+renesas@verge.net.au> Looks good to me. Acked-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-02-15 19:37 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1357260060-32164-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com> 2013-01-04 0:40 ` [PATCH 1/9] sh-pfc: Add OF support Laurent Pinchart 2013-01-04 1:12 ` Tony Prisk 2013-01-07 18:56 ` Laurent Pinchart [not found] <1360726161-16072-1-git-send-email-horms+renesas@verge.net.au> [not found] ` <1360726161-16072-1-git-send-email-horms+renesas-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org> 2013-02-13 3:29 ` Simon Horman 2013-02-15 19:37 ` Linus Walleij
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).