* [PATCH v5 01/22] pinctrl: generic: Add DT bindings
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
[not found] ` <1370989371-30846-2-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2013-06-11 22:22 ` [PATCH v5 02/22] sh-pfc: Remove support for platform data Laurent Pinchart
` (20 subsequent siblings)
21 siblings, 1 reply; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Document DT properties for the generic pinctrl parameters and add a
parser function.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
.../bindings/pinctrl/pinctrl-bindings.txt | 29 +++++++
drivers/pinctrl/pinconf-generic.c | 94 ++++++++++++++++++++++
drivers/pinctrl/pinconf.h | 17 ++++
3 files changed, 140 insertions(+)
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
index c95ea82..e499ff0 100644
--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
@@ -126,3 +126,32 @@ device; they may be grandchildren, for example. Whether this is legal, and
whether there is any interaction between the child and intermediate parent
nodes, is again defined entirely by the binding for the individual pin
controller device.
+
+== Generic pinconf parameters ==
+
+Pin configuration parameters are expressed by DT properties in the pin
+controller device state nodes and child nodes. For devices that use the generic
+pinconf parameters the following properties are defined.
+
+- tristate: A boolean, put the pin into high impedance state when set.
+
+- pull-up: An integer representing the pull-up strength. 0 disables the pull-up,
+ non-zero values enable it.
+
+- pull-down: An integer representing the pull-down strength. 0 disables the
+ pull-down, non-zero values enables it.
+
+- schmitt: An integer, enable or disable Schmitt trigger mode for the pins.
+ Valid values are
+ 0: Schmitt trigger disabled (no hysteresis)
+ 1: Schmitt trigger enabled
+
+- slew-rate: An integer controlling the pin slew rate. Values are device-
+ dependent.
+
+- drive-strength: An integer representing the drive strength of pins in mA.
+ Valid values are device-dependent.
+
+The pinctrl device DT bindings documentation must list the properties that
+apply to the device, and define the valid range for all device-dependent
+values.
diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-generic.c
index 2ad5a8d..bd0e41d 100644
--- a/drivers/pinctrl/pinconf-generic.c
+++ b/drivers/pinctrl/pinconf-generic.c
@@ -15,6 +15,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/device.h>
+#include <linux/of.h>
#include <linux/slab.h>
#include <linux/debugfs.h>
#include <linux/seq_file.h>
@@ -135,3 +136,96 @@ void pinconf_generic_dump_config(struct pinctrl_dev *pctldev,
}
EXPORT_SYMBOL_GPL(pinconf_generic_dump_config);
#endif
+
+struct pinconf_generic_param {
+ const char *property;
+ enum pin_config_param param;
+ bool flag;
+};
+
+static const struct pinconf_generic_param pinconf_generic_params[] = {
+ { "tristate", PIN_CONFIG_BIAS_HIGH_IMPEDANCE, true },
+ { "pull-up", PIN_CONFIG_BIAS_PULL_UP, false },
+ { "pull-down", PIN_CONFIG_BIAS_PULL_DOWN, false },
+ { "schmitt", PIN_CONFIG_INPUT_SCHMITT_ENABLE, true },
+ { "slew-rate", PIN_CONFIG_SLEW_RATE, false },
+ { "drive-strength", PIN_CONFIG_DRIVE_STRENGTH, false },
+};
+
+static int pinconf_generic_add_config(unsigned long **configs,
+ unsigned int *num_configs,
+ unsigned long config)
+{
+ unsigned int count = *num_configs + 1;
+ unsigned long *cfgs;
+
+ cfgs = krealloc(*configs, sizeof(*cfgs) * count, GFP_KERNEL);
+ if (cfgs == NULL)
+ return -ENOMEM;
+
+ cfgs[count - 1] = config;
+
+ *configs = cfgs;
+ *num_configs = count;
+
+ return 0;
+}
+
+/**
+ * pinconf_generic_parse_params - Parse generic pinconf parameters from DT
+ * @dev: the device, used to print error messages
+ * @np: the DT node that contains generic pinconf parameters
+ * @cfgs: the returned array of pinconf parameters
+ *
+ * The parameters array is allocated dynamically and returned through the cfgs
+ * argument. The caller is responsible for freeing the array with kfree(). If no
+ * configuration parameter is found, or if an error occurs, no parameters array
+ * will be allocated and the cfgs argument will be set to NULL.
+ *
+ * Return the number of configuration parameters successfully parsed, or a
+ * negative value if an error occurred. Used error codes are
+ *
+ * -ENOMEM if memory can't be allocated for the parameters array
+ */
+int pinconf_generic_parse_params(struct device *dev, struct device_node *np,
+ unsigned long **cfgs)
+{
+ unsigned long *configs = NULL;
+ unsigned int num_configs = 0;
+ unsigned int i;
+ int ret;
+
+ for (i = 0; i < ARRAY_SIZE(pinconf_generic_params); ++i) {
+ const struct pinconf_generic_param *param =
+ &pinconf_generic_params[i];
+ unsigned long config;
+ u32 val;
+
+ if (param->flag) {
+ ret = of_property_read_bool(np, param->property)
+ ? 0 : -EINVAL;
+ val = 1;
+ } else {
+ ret = of_property_read_u32(np, param->property, &val);
+ }
+
+ if (ret) {
+ if (ret != -EINVAL)
+ dev_err(dev, "failed to parse property %s\n",
+ param->property);
+ continue;
+ }
+
+ config = pinconf_to_config_packed(param->param, val);
+ ret = pinconf_generic_add_config(&configs, &num_configs, config);
+ if (ret < 0) {
+ kfree(configs);
+ *cfgs = NULL;
+ return ret;
+ }
+ }
+
+ *cfgs = configs;
+ return num_configs;
+}
+EXPORT_SYMBOL_GPL(pinconf_generic_parse_params);
diff --git a/drivers/pinctrl/pinconf.h b/drivers/pinctrl/pinconf.h
index 92c7267..eb8550b 100644
--- a/drivers/pinctrl/pinconf.h
+++ b/drivers/pinctrl/pinconf.h
@@ -90,6 +90,23 @@ static inline void pinconf_init_device_debugfs(struct dentry *devroot,
* pin config.
*/
+#if defined(CONFIG_GENERIC_PINCONF)
+
+int pinconf_generic_parse_params(struct device *dev, struct device_node *np,
+ unsigned long **cfgs);
+
+#else
+
+static inline int pinconf_generic_parse_params(struct device *dev,
+ struct device_node *np,
+ unsigned long **cfgs)
+{
+ *cfgs = NULL;
+ return 0;
+}
+
+#endif
+
#if defined(CONFIG_GENERIC_PINCONF) && defined(CONFIG_DEBUG_FS)
void pinconf_generic_dump_pin(struct pinctrl_dev *pctldev,
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 02/22] sh-pfc: Remove support for platform data
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 01/22] pinctrl: generic: Add DT bindings Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 03/22] sh-pfc: Add DT support Laurent Pinchart
` (19 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Platform data isn't used, support can thus be removed.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/pinctrl/sh-pfc/core.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c
index 3b2fd43..ac45084 100644
--- a/drivers/pinctrl/sh-pfc/core.c
+++ b/drivers/pinctrl/sh-pfc/core.c
@@ -354,8 +354,7 @@ static int sh_pfc_probe(struct platform_device *pdev)
struct sh_pfc *pfc;
int ret;
- info = pdev->id_entry->driver_data
- ? (void *)pdev->id_entry->driver_data : pdev->dev.platform_data;
+ info = (void *)pdev->id_entry->driver_data;
if (info == NULL)
return -ENODEV;
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 03/22] sh-pfc: Add DT support
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 01/22] pinctrl: generic: Add DT bindings Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 02/22] sh-pfc: Remove support for platform data Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 04/22] ARM: shmobile: r8a73a4: Add pin control device to device tree Laurent Pinchart
` (18 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
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.
Cc: devicetree-discuss@lists.ozlabs.org
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
.../bindings/pinctrl/renesas,pfc-pinctrl.txt | 156 ++++++++++++++++
drivers/pinctrl/sh-pfc/core.c | 64 ++++++-
drivers/pinctrl/sh-pfc/pinctrl.c | 199 +++++++++++++++++++++
3 files changed, 418 insertions(+), 1 deletion(-)
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..6504d65
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
@@ -0,0 +1,156 @@
+* Renesas Pin Function Controller (GPIO and Pin Mux/Config)
+
+The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH7372,
+SH73A0, R8A73A4 and R8A7740 it also acts as a GPIO controller.
+
+
+Pin Control
+-----------
+
+Required Properties:
+
+ - compatible: should be one of the following.
+ - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller.
+ - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller.
+ - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller.
+ - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller.
+ - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) 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.
+
+Optional properties:
+
+ - #gpio-range-cells: Mandatory when the PFC doesn't handle GPIO, forbidden
+ otherwise. Should be 3.
+
+The PFC node also acts as a container for pin configuration nodes. Please refer
+to pinctrl-bindings.txt in this directory for the definition of the term "pin
+configuration node" and for the common pinctrl bindings used by client devices.
+
+Each pin configuration node represents a desired configuration for a pin, a
+pin group, or a list of pins or pin groups. The configuration can include the
+function to select on those pin(s) and pin configuration parameters (such as
+pull-up and pull-down).
+
+Pin configuration nodes contain pin configuration properties, either directly
+or grouped in child subnodes. Both pin muxing and configuration parameters can
+be grouped in that way and referenced as a single pin configuration node by
+client devices.
+
+A configuration node or subnode must reference at least one pin (through the
+pins or pin groups properties) and contain at least a function or one
+configuration parameter. When the function is present only pin groups can be
+used to reference pins.
+
+All pin configuration nodes and subnodes names are ignored. All of those nodes
+are parsed through phandles and processed purely based on their content.
+
+Pin Configuration Node Properties:
+
+- renesas,pins : An array of strings, each string containing the name of a pin.
+- renesas,groups : An array of strings, each string containing the name of a pin
+ group.
+
+- renesas,function: A string containing the name of the function to mux to the
+ pin group(s) specified by the renesas,groups property
+
+ Valid values for pin, group and function names can be found in the group and
+ function arrays of the PFC data file corresponding to the SoC
+ (drivers/pinctrl/sh-pfc/pfc-*.c)
+
+The pin configuration parameters use the generic pinconf bindings defined in
+pinctrl-bindings.txt in this directory. The supported parameters and values are:
+
+- pull-up: 0 disables the pull-up, 1 enables it. Other values must not be used.
+- pull-down: 0 disables the pull-down, 1 enables it. Other values must not be
+ used.
+
+
+GPIO
+----
+
+On SH7372, SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller
+node.
+
+Required Properties:
+
+ - gpio-controller: Marks the device node as a gpio controller.
+
+ - #gpio-cells: Should be 2. The first cell is the GPIO number and the second
+ cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the
+ GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
+
+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]>
+
+On other mach-shmobile platforms GPIO is handled by the gpio-rcar driver.
+Please refer to Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
+for documentation of the GPIO device tree bindings on those platforms.
+
+
+Examples
+--------
+
+Example 1: SH73A0 (SH-Mobile AG5) pin controller node
+
+ pfc: 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
+
+ #include <dt-bindings/gpio/gpio.h>
+
+ leds {
+ compatible = "gpio-leds";
+ led1 {
+ gpios = <&pfc 20 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+Example 3: KZM-A9-GT (SH-Mobile AG5) default pin state hog and pin control maps
+ for the MMCIF and SCIFA4 devices
+
+ &pfc {
+ pinctrl-0 = <&scifa4_pins>;
+ pinctrl-names = "default";
+
+ mmcif_pins: mmcif {
+ mux {
+ renesas,groups = "mmc0_data8_0", "mmc0_ctrl_0";
+ renesas,function = "mmc0";
+ };
+ cfg {
+ renesas,groups = "mmc0_data8_0";
+ renesas,pins = "PORT279";
+ pull-up = <1>;
+ };
+ };
+
+ scifa4_pins: scifa4 {
+ renesas,groups = "scifa4_data", "scifa4_ctrl";
+ renesas,function = "scifa4";
+ };
+ };
+
+Example 4: KZM-A9-GT (SH-Mobile AG5) default pin state for the MMCIF device
+
+ &mmcif {
+ pinctrl-0 = <&mmcif_pins>;
+ pinctrl-names = "default";
+
+ bus-width = <8>;
+ vmmc-supply = <®_1p8v>;
+ status = "okay";
+ };
diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c
index ac45084..f3fc66b 100644
--- a/drivers/pinctrl/sh-pfc/core.c
+++ b/drivers/pinctrl/sh-pfc/core.c
@@ -18,6 +18,8 @@
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
#include <linux/pinctrl/machine.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
@@ -348,13 +350,72 @@ int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type)
return 0;
}
+#ifdef CONFIG_OF
+static const struct of_device_id sh_pfc_of_table[] = {
+#ifdef CONFIG_PINCTRL_PFC_R8A73A4
+ {
+ .compatible = "renesas,pfc-r8a73a4",
+ .data = &r8a73a4_pinmux_info,
+ },
+#endif
+#ifdef CONFIG_PINCTRL_PFC_R8A7740
+ {
+ .compatible = "renesas,pfc-r8a7740",
+ .data = &r8a7740_pinmux_info,
+ },
+#endif
+#ifdef CONFIG_PINCTRL_PFC_R8A7778
+ {
+ .compatible = "renesas,pfc-r8a7778",
+ .data = &r8a7778_pinmux_info,
+ },
+#endif
+#ifdef CONFIG_PINCTRL_PFC_R8A7779
+ {
+ .compatible = "renesas,pfc-r8a7779",
+ .data = &r8a7779_pinmux_info,
+ },
+#endif
+#ifdef CONFIG_PINCTRL_PFC_R8A7790
+ {
+ .compatible = "renesas,pfc-r8a7790",
+ .data = &r8a7790_pinmux_info,
+ },
+#endif
+#ifdef CONFIG_PINCTRL_PFC_SH7372
+ {
+ .compatible = "renesas,pfc-sh7372",
+ .data = &sh7372_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
const struct sh_pfc_soc_info *info;
struct sh_pfc *pfc;
int ret;
- info = (void *)pdev->id_entry->driver_data;
+#ifdef CONFIG_OF
+ if (np)
+ info = of_match_device(sh_pfc_of_table, &pdev->dev)->data;
+ else
+#endif
+ info = platid ? (const void *)platid->driver_data : NULL;
+
if (info == NULL)
return -ENODEV;
@@ -500,6 +561,7 @@ static struct platform_driver sh_pfc_driver = {
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(sh_pfc_of_table),
},
};
diff --git a/drivers/pinctrl/sh-pfc/pinctrl.c b/drivers/pinctrl/sh-pfc/pinctrl.c
index 3492ec9..8e17a08 100644
--- a/drivers/pinctrl/sh-pfc/pinctrl.c
+++ b/drivers/pinctrl/sh-pfc/pinctrl.c
@@ -14,7 +14,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>
@@ -72,11 +74,208 @@ 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_map_add_config(struct pinctrl_map *map,
+ const char *group_or_pin,
+ enum pinctrl_map_type type,
+ unsigned long *configs,
+ unsigned int num_configs)
+{
+ unsigned long *cfgs;
+
+ cfgs = kmemdup(configs, num_configs * sizeof(*cfgs),
+ GFP_KERNEL);
+ if (cfgs == NULL)
+ return -ENOMEM;
+
+ map->type = type;
+ map->data.configs.group_or_pin = group_or_pin;
+ map->data.configs.configs = cfgs;
+ map->data.configs.num_configs = num_configs;
+
+ return 0;
+}
+
+static int sh_pfc_dt_subnode_to_map(struct device *dev, struct device_node *np,
+ struct pinctrl_map **map,
+ unsigned int *num_maps, unsigned int *index)
+{
+ struct pinctrl_map *maps = *map;
+ unsigned int nmaps = *num_maps;
+ unsigned int idx = *index;
+ unsigned int num_configs;
+ const char *function = NULL;
+ unsigned long *configs;
+ struct property *prop;
+ unsigned int num_pins;
+ const char *group;
+ const char *pin;
+ int ret;
+
+ /* Parse the function and configuration properties. At least a function
+ * or one configuration must be specified.
+ */
+ ret = of_property_read_string(np, "renesas,function", &function);
+ if (ret < 0 && ret != -EINVAL) {
+ dev_err(dev, "Invalid function in DT\n");
+ return ret;
+ }
+
+ ret = pinconf_generic_parse_params(dev, np, &configs);
+ if (ret < 0)
+ return ret;
+
+ num_configs = ret;
+
+ if (!function && num_configs == 0) {
+ dev_err(dev,
+ "DT node must contain at least a function or config\n");
+ goto done;
+ }
+
+ /* Count the number of pins and groups and reallocate mappings. */
+ ret = of_property_count_strings(np, "renesas,pins");
+ if (ret < 0 && ret != -EINVAL) {
+ dev_err(dev, "Invalid pins list in DT\n");
+ goto done;
+ }
+ num_pins = ret;
+
+ if (configs)
+ nmaps += ret;
+
+ ret = of_property_count_strings(np, "renesas,groups");
+ if (ret < 0 && ret != -EINVAL) {
+ dev_err(dev, "Invalid pin groups list in DT\n");
+ goto done;
+ }
+ num_pins += ret;
+
+ if (function)
+ nmaps += ret;
+ if (configs)
+ nmaps += ret;
+
+ if (!num_pins) {
+ dev_err(dev, "No pin or group provided in DT node\n");
+ ret = -ENODEV;
+ goto done;
+ }
+
+ maps = krealloc(maps, sizeof(*maps) * nmaps, GFP_KERNEL);
+ if (maps == NULL) {
+ ret = -ENOMEM;
+ goto done;
+ }
+
+ *map = maps;
+ *num_maps = nmaps;
+
+ /* Iterate over pins and groups and create the mappings. */
+ of_property_for_each_string(np, "renesas,groups", prop, group) {
+ if (function) {
+ maps[idx].type = PIN_MAP_TYPE_MUX_GROUP;
+ maps[idx].data.mux.group = group;
+ maps[idx].data.mux.function = function;
+ idx++;
+ }
+
+ if (configs) {
+ ret = sh_pfc_map_add_config(&maps[idx], group,
+ PIN_MAP_TYPE_CONFIGS_GROUP,
+ configs, num_configs);
+ if (ret < 0)
+ goto done;
+
+ idx++;
+ }
+ }
+
+ if (!configs) {
+ ret = 0;
+ goto done;
+ }
+
+ of_property_for_each_string(np, "renesas,pins", prop, pin) {
+ ret = sh_pfc_map_add_config(&maps[idx], pin,
+ PIN_MAP_TYPE_CONFIGS_PIN,
+ configs, num_configs);
+ if (ret < 0)
+ goto done;
+
+ idx++;
+ }
+
+done:
+ *index = idx;
+ kfree(configs);
+ return ret;
+}
+
+static void sh_pfc_dt_free_map(struct pinctrl_dev *pctldev,
+ struct pinctrl_map *map, unsigned num_maps)
+{
+ unsigned int i;
+
+ if (map == NULL)
+ return;
+
+ for (i = 0; i < num_maps; ++i) {
+ if (map[i].type == PIN_MAP_TYPE_CONFIGS_GROUP ||
+ map[i].type == PIN_MAP_TYPE_CONFIGS_PIN)
+ kfree(map[i].data.configs.configs);
+ }
+
+ kfree(map);
+}
+
+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 device *dev = pmx->pfc->dev;
+ struct device_node *child;
+ unsigned int index;
+ int ret;
+
+ *map = NULL;
+ *num_maps = 0;
+ index = 0;
+
+ for_each_child_of_node(np, child) {
+ ret = sh_pfc_dt_subnode_to_map(dev, child, map, num_maps,
+ &index);
+ if (ret < 0)
+ goto done;
+ }
+
+ /* If no mapping has been found in child nodes try the config node. */
+ if (*num_maps == 0) {
+ ret = sh_pfc_dt_subnode_to_map(dev, np, map, num_maps, &index);
+ if (ret < 0)
+ goto done;
+ }
+
+ if (*num_maps)
+ return 0;
+
+ dev_err(dev, "no mapping found in node %s\n", np->full_name);
+ ret = -EINVAL;
+
+done:
+ if (ret < 0)
+ sh_pfc_dt_free_map(pctldev, *map, *num_maps);
+
+ return ret;
+}
+
static const 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.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 04/22] ARM: shmobile: r8a73a4: Add pin control device to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (2 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 03/22] sh-pfc: Add DT support Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 05/22] ARM: shmobile: r8a7740: " Laurent Pinchart
` (17 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add a pfc node to the r8a73a4 device tree.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a73a4.dtsi | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm/boot/dts/r8a73a4.dtsi b/arch/arm/boot/dts/r8a73a4.dtsi
index 4ff2019..5aa1180 100644
--- a/arch/arm/boot/dts/r8a73a4.dtsi
+++ b/arch/arm/boot/dts/r8a73a4.dtsi
@@ -85,4 +85,11 @@
interrupt-parent = <&gic>;
interrupts = <0 69 4>;
};
+
+ pfc: pfc@e6050000 {
+ compatible = "renesas,pfc-r8a73a4";
+ reg = <0xe6050000 0x9000>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
};
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 05/22] ARM: shmobile: r8a7740: Add pin control device to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (3 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 04/22] ARM: shmobile: r8a73a4: Add pin control device to device tree Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 06/22] ARM: shmobile: r8a7778: " Laurent Pinchart
` (16 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add a pfc node to the r8a7740 device tree and remove manual pinmux
initialization from the corresponding board files.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7740.dtsi | 8 ++++++++
arch/arm/mach-shmobile/board-armadillo800eva-reference.c | 16 ++++++++--------
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/arch/arm/boot/dts/r8a7740.dtsi b/arch/arm/boot/dts/r8a7740.dtsi
index 25dc930..2fa3708 100644
--- a/arch/arm/boot/dts/r8a7740.dtsi
+++ b/arch/arm/boot/dts/r8a7740.dtsi
@@ -135,4 +135,12 @@
0 72 0x4
0 73 0x4>;
};
+
+ pfc: pfc@e6050000 {
+ compatible = "renesas,pfc-r8a7740";
+ reg = <0xe6050000 0x8000>,
+ <0xe605800c 0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
};
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
index 03b85fe..f25b6aa 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
@@ -121,7 +121,7 @@
static const struct pinctrl_map eva_pinctrl_map[] = {
/* SCIFA1 */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.1", "pfc-r8a7740",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.1", "e6050000.pfc",
"scifa1_data", "scifa1"),
};
@@ -170,22 +170,22 @@ static void __init eva_init(void)
eva_clock_init();
pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map));
- r8a7740_pinmux_init();
r8a7740_meram_workaround();
- /*
- * Touchscreen
- * TODO: Move reset GPIO over to .dts when we can reference it
- */
- gpio_request_one(166, GPIOF_OUT_INIT_HIGH, NULL); /* TP_RST_B */
-
#ifdef CONFIG_CACHE_L2X0
/* Early BRESP enable, Shared attribute override enable, 32K*8way */
l2x0_init(IOMEM(0xf0002000), 0x40440000, 0x82000fff);
#endif
r8a7740_add_standard_devices_dt();
+
+ /*
+ * Touchscreen
+ * TODO: Move reset GPIO over to .dts when we can reference it
+ */
+ gpio_request_one(166, GPIOF_OUT_INIT_HIGH, NULL); /* TP_RST_B */
+
r8a7740_pm_init();
}
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 06/22] ARM: shmobile: r8a7778: Add pin control device to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (4 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 05/22] ARM: shmobile: r8a7740: " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 07/22] ARM: shmobile: r8a7778: Add GPIO controller devices " Laurent Pinchart
` (15 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add a pfc node to the r8a7778 device tree.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7778.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7778.dtsi b/arch/arm/boot/dts/r8a7778.dtsi
index 4743735..c8dbf14 100644
--- a/arch/arm/boot/dts/r8a7778.dtsi
+++ b/arch/arm/boot/dts/r8a7778.dtsi
@@ -32,4 +32,9 @@
reg = <0xfe438000 0x1000>,
<0xfe430000 0x100>;
};
+
+ pfc: pfc@fffc0000 {
+ compatible = "renesas,pfc-r8a7778";
+ reg = <0xfffc000 0x118>;
+ };
};
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 07/22] ARM: shmobile: r8a7778: Add GPIO controller devices to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (5 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 06/22] ARM: shmobile: r8a7778: " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 08/22] ARM: shmobile: r8a7779: Add pin control device " Laurent Pinchart
` (14 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add GPIO controller nodes to the r8a7778 core device tree.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7778.dtsi | 51 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7778.dtsi b/arch/arm/boot/dts/r8a7778.dtsi
index c8dbf14..0639e8b 100644
--- a/arch/arm/boot/dts/r8a7778.dtsi
+++ b/arch/arm/boot/dts/r8a7778.dtsi
@@ -33,8 +33,59 @@
<0xfe430000 0x100>;
};
+ gpio0: gpio@ffc40000 {
+ compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
+ reg = <0xffc40000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 103 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 0 32>;
+ };
+
+ gpio1: gpio@ffc41000 {
+ compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
+ reg = <0xffc41000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 103 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 32 32>;
+ };
+
+ gpio2: gpio@ffc42000 {
+ compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
+ reg = <0xffc42000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 103 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 64 32>;
+ };
+
+ gpio3: gpio@ffc43000 {
+ compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
+ reg = <0xffc43000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 103 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 96 32>;
+ };
+
+ gpio4: gpio@ffc44000 {
+ compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
+ reg = <0xffc44000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 103 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 128 27>;
+ };
+
pfc: pfc@fffc0000 {
compatible = "renesas,pfc-r8a7778";
reg = <0xfffc000 0x118>;
+ #gpio-range-cells = <3>;
};
};
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 08/22] ARM: shmobile: r8a7779: Add pin control device to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (6 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 07/22] ARM: shmobile: r8a7778: Add GPIO controller devices " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 09/22] ARM: shmobile: r8a7779: Add GPIO controller devices " Laurent Pinchart
` (13 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add a pfc node to the r8a7779 device tree and remove manual pinmux
initialization from the corresponding board files.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7779.dtsi | 5 +++++
arch/arm/mach-shmobile/board-marzen-reference.c | 17 ++++++++---------
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/arch/arm/boot/dts/r8a7779.dtsi b/arch/arm/boot/dts/r8a7779.dtsi
index 7f146c6..9dfc438 100644
--- a/arch/arm/boot/dts/r8a7779.dtsi
+++ b/arch/arm/boot/dts/r8a7779.dtsi
@@ -101,6 +101,11 @@
interrupts = <0 81 0x4>;
};
+ pfc: pfc@fffc0000 {
+ compatible = "renesas,pfc-r8a7779";
+ reg = <0xfffc0000 0x23c>;
+ };
+
thermal@ffc48000 {
compatible = "renesas,rcar-thermal";
reg = <0xffc48000 0x38>;
diff --git a/arch/arm/mach-shmobile/board-marzen-reference.c b/arch/arm/mach-shmobile/board-marzen-reference.c
index 480d882..94804f3 100644
--- a/arch/arm/mach-shmobile/board-marzen-reference.c
+++ b/arch/arm/mach-shmobile/board-marzen-reference.c
@@ -28,24 +28,24 @@
static const struct pinctrl_map marzen_pinctrl_map[] = {
/* SCIF2 (CN18: DEBUG0) */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.2", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.2", "fffc0000.pfc",
"scif2_data_c", "scif2"),
/* SCIF4 (CN19: DEBUG1) */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "fffc0000.pfc",
"scif4_data", "scif4"),
/* SDHI0 */
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
"sdhi0_data4", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
"sdhi0_ctrl", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
"sdhi0_cd", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
"sdhi0_wp", "sdhi0"),
/* SMSC */
- PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "fffc0000.pfc",
"intc_irq1_b", "intc"),
- PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a7779",
+ PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "fffc0000.pfc",
"lbsc_ex_cs0", "lbsc"),
};
@@ -53,7 +53,6 @@ static void __init marzen_init(void)
{
pinctrl_register_mappings(marzen_pinctrl_map,
ARRAY_SIZE(marzen_pinctrl_map));
- r8a7779_pinmux_init();
r8a7779_add_standard_devices_dt();
}
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 09/22] ARM: shmobile: r8a7779: Add GPIO controller devices to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (7 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 08/22] ARM: shmobile: r8a7779: Add pin control device " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 10/22] ARM: shmobile: r8a7790: Add pin control device " Laurent Pinchart
` (12 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add GPIO controller nodes to the r8a7779 core device tree.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7779.dtsi | 71 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7779.dtsi b/arch/arm/boot/dts/r8a7779.dtsi
index 9dfc438..2bbb4cb 100644
--- a/arch/arm/boot/dts/r8a7779.dtsi
+++ b/arch/arm/boot/dts/r8a7779.dtsi
@@ -48,6 +48,76 @@
<0xf0000100 0x100>;
};
+ gpio0: gpio@ffc40000 {
+ compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
+ reg = <0xffc40000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 141 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 0 32>;
+ };
+
+ gpio1: gpio@ffc41000 {
+ compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
+ reg = <0xffc41000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 142 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 32 32>;
+ };
+
+ gpio2: gpio@ffc42000 {
+ compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
+ reg = <0xffc42000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 143 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 64 32>;
+ };
+
+ gpio3: gpio@ffc43000 {
+ compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
+ reg = <0xffc43000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 144 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 96 32>;
+ };
+
+ gpio4: gpio@ffc44000 {
+ compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
+ reg = <0xffc44000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 145 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 128 32>;
+ };
+
+ gpio5: gpio@ffc45000 {
+ compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
+ reg = <0xffc45000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 146 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 160 32>;
+ };
+
+ gpio6: gpio@ffc46000 {
+ compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
+ reg = <0xffc46000 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 147 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 192 9>;
+ };
+
irqpin0: irqpin@fe780010 {
compatible = "renesas,intc-irqpin";
#interrupt-cells = <2>;
@@ -104,6 +174,7 @@
pfc: pfc@fffc0000 {
compatible = "renesas,pfc-r8a7779";
reg = <0xfffc0000 0x23c>;
+ #gpio-range-cells = <3>;
};
thermal@ffc48000 {
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 10/22] ARM: shmobile: r8a7790: Add pin control device to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (8 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 09/22] ARM: shmobile: r8a7779: Add GPIO controller devices " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 11/22] ARM: shmobile: r8a7790: Add GPIO controller devices " Laurent Pinchart
` (11 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add a pfc node to the r8a7790 device tree.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7790.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi
index 339d9b1..13caf12 100644
--- a/arch/arm/boot/dts/r8a7790.dtsi
+++ b/arch/arm/boot/dts/r8a7790.dtsi
@@ -54,4 +54,9 @@
interrupt-parent = <&gic>;
interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>;
};
+
+ pfc: pfc@e6060000 {
+ compatible = "renesas,pfc-r8a7790";
+ reg = <0 0xe6060000 0 0x250>;
+ };
};
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 11/22] ARM: shmobile: r8a7790: Add GPIO controller devices to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (9 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 10/22] ARM: shmobile: r8a7790: Add pin control device " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 12/22] ARM: shmobile: sh7372: Add pin control device " Laurent Pinchart
` (10 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add GPIO controller nodes to the r8a7790 core device tree.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7790.dtsi | 61 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi
index 13caf12..1b75c1d 100644
--- a/arch/arm/boot/dts/r8a7790.dtsi
+++ b/arch/arm/boot/dts/r8a7790.dtsi
@@ -38,6 +38,66 @@
interrupts = <1 9 0xf04>;
};
+ gpio0: gpio@ffc40000 {
+ compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
+ reg = <0 0xffc40000 0 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 4 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 0 32>;
+ };
+
+ gpio1: gpio@ffc41000 {
+ compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
+ reg = <0 0xffc41000 0 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 5 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 32 32>;
+ };
+
+ gpio2: gpio@ffc42000 {
+ compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
+ reg = <0 0xffc42000 0 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 6 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 64 32>;
+ };
+
+ gpio3: gpio@ffc43000 {
+ compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
+ reg = <0 0xffc43000 0 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 7 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 96 32>;
+ };
+
+ gpio4: gpio@ffc44000 {
+ compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
+ reg = <0 0xffc44000 0 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 8 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 128 32>;
+ };
+
+ gpio5: gpio@ffc45000 {
+ compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
+ reg = <0 0xffc45000 0 0x2c>;
+ interrupt-parent = <&gic>;
+ interrupts = <0 9 0x4>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-ranges = <&pfc 0 160 32>;
+ };
+
timer {
compatible = "arm,armv7-timer";
interrupts = <1 13 0xf08>,
@@ -58,5 +118,6 @@
pfc: pfc@e6060000 {
compatible = "renesas,pfc-r8a7790";
reg = <0 0xe6060000 0 0x250>;
+ #gpio-range-cells = <3>;
};
};
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 12/22] ARM: shmobile: sh7372: Add pin control device to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (10 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 11/22] ARM: shmobile: r8a7790: Add GPIO controller devices " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 13/22] ARM: shmobile: sh73a0: " Laurent Pinchart
` (9 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add a pfc node to the sh7372 device tree.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/sh7372.dtsi | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/sh7372.dtsi b/arch/arm/boot/dts/sh7372.dtsi
index 677fc60..ce19398 100644
--- a/arch/arm/boot/dts/sh7372.dtsi
+++ b/arch/arm/boot/dts/sh7372.dtsi
@@ -18,4 +18,12 @@
compatible = "arm,cortex-a8";
};
};
+
+ pfc: pfc@e6050000 {
+ compatible = "renesas,pfc-sh7372";
+ reg = <0xe6050000 0x8000>,
+ <0xe605801c 0x1c>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
};
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 13/22] ARM: shmobile: sh73a0: Add pin control device to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (11 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 12/22] ARM: shmobile: sh7372: Add pin control device " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 14/22] ARM: shmobile: armadillo-reference: Move pinctrl mappings " Laurent Pinchart
` (8 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add a pfc node to the sh73a0 device tree and remove manual pinmux
initialization from the corresponding board files.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/sh73a0.dtsi | 8 ++++++++
arch/arm/mach-shmobile/board-kzm9g-reference.c | 27 +++++++++++++-------------
2 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/arch/arm/boot/dts/sh73a0.dtsi b/arch/arm/boot/dts/sh73a0.dtsi
index ec40bf7..abe02d6 100644
--- a/arch/arm/boot/dts/sh73a0.dtsi
+++ b/arch/arm/boot/dts/sh73a0.dtsi
@@ -222,4 +222,12 @@
cap-sd-highspeed;
status = "disabled";
};
+
+ pfc: pfc@e6050000 {
+ compatible = "renesas,pfc-sh73a0";
+ reg = <0xe6050000 0x8000>,
+ <0xe605801c 0x1c>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
};
diff --git a/arch/arm/mach-shmobile/board-kzm9g-reference.c b/arch/arm/mach-shmobile/board-kzm9g-reference.c
index 44055fe..6ff6ca2 100644
--- a/arch/arm/mach-shmobile/board-kzm9g-reference.c
+++ b/arch/arm/mach-shmobile/board-kzm9g-reference.c
@@ -40,35 +40,35 @@ static unsigned long pin_pullup_conf[] = {
};
static const struct pinctrl_map kzm_pinctrl_map[] = {
- PIN_MAP_MUX_GROUP_DEFAULT("e6826000.i2c", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("e6826000.i2c", "e6050000.pfc",
"i2c3_1", "i2c3"),
/* MMCIF */
- PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
"mmc0_data8_0", "mmc0"),
- PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
"mmc0_ctrl_0", "mmc0"),
- PIN_MAP_CONFIGS_PIN_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
+ PIN_MAP_CONFIGS_PIN_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
"PORT279", pin_pullup_conf),
- PIN_MAP_CONFIGS_GROUP_DEFAULT("e6bd0000.mmcif", "pfc-sh73a0",
+ PIN_MAP_CONFIGS_GROUP_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
"mmc0_data8_0", pin_pullup_conf),
/* SCIFA4 */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "e6050000.pfc",
"scifa4_data", "scifa4"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "e6050000.pfc",
"scifa4_ctrl", "scifa4"),
/* SDHI0 */
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
"sdhi0_data4", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
"sdhi0_ctrl", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
"sdhi0_cd", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
"sdhi0_wp", "sdhi0"),
/* SDHI2 */
- PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "e6050000.pfc",
"sdhi2_data4", "sdhi2"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "pfc-sh73a0",
+ PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "e6050000.pfc",
"sdhi2_ctrl", "sdhi2"),
};
@@ -76,7 +76,6 @@ static void __init kzm_init(void)
{
sh73a0_add_standard_devices_dt();
pinctrl_register_mappings(kzm_pinctrl_map, ARRAY_SIZE(kzm_pinctrl_map));
- sh73a0_pinmux_init();
/* enable SD */
gpio_request_one(15, GPIOF_OUT_INIT_HIGH, NULL); /* power */
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 14/22] ARM: shmobile: armadillo-reference: Move pinctrl mappings to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (12 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 13/22] ARM: shmobile: sh73a0: " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 15/22] ARM: shmobile: armadillo-reference: Add st1232 pin mappings Laurent Pinchart
` (7 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Replace the pinctrl mappings in board code by device tree mappings.
For devices that are still instantiated from board code reference the
mappings as the default pin controller state to apply them at boot time.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 10 ++++++++++
arch/arm/mach-shmobile/board-armadillo800eva-reference.c | 9 ---------
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
index 09ea22c..4a7ae32 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
@@ -43,3 +43,13 @@
interrupts = <2 0>; /* IRQ10: hwirq 2 on irqpin1 */
};
};
+
+&pfc {
+ pinctrl-0 = <&scifa1_pins>;
+ pinctrl-names = "default";
+
+ scifa1_pins: scifa1 {
+ renesas,groups = "scifa1_data";
+ renesas,function = "scifa1";
+ };
+};
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
index f25b6aa..4ddd299 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
@@ -24,7 +24,6 @@
#include <linux/kernel.h>
#include <linux/gpio.h>
#include <linux/io.h>
-#include <linux/pinctrl/machine.h>
#include <mach/common.h>
#include <mach/r8a7740.h>
#include <asm/mach/arch.h>
@@ -119,12 +118,6 @@
* usbhsf_power_ctrl()
*/
-static const struct pinctrl_map eva_pinctrl_map[] = {
- /* SCIFA1 */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.1", "e6050000.pfc",
- "scifa1_data", "scifa1"),
-};
-
static void __init eva_clock_init(void)
{
struct clk *system = clk_get(NULL, "system_clk");
@@ -169,8 +162,6 @@ static void __init eva_init(void)
r8a7740_clock_init(MD_CK0 | MD_CK2);
eva_clock_init();
- pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map));
-
r8a7740_meram_workaround();
#ifdef CONFIG_CACHE_L2X0
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 15/22] ARM: shmobile: armadillo-reference: Add st1232 pin mappings
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (13 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 14/22] ARM: shmobile: armadillo-reference: Move pinctrl mappings " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 16/22] ARM: shmobile: armadillo-reference: Move st1232 reset GPIO to DT Laurent Pinchart
` (6 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Add pin mappings for the st1232 device to the device tree and reference
them as the default state for the device.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
index 4a7ae32..a6c6606 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
@@ -41,6 +41,8 @@
reg = <0x55>;
interrupt-parent = <&irqpin1>;
interrupts = <2 0>; /* IRQ10: hwirq 2 on irqpin1 */
+ pinctrl-0 = <&st1232_pins>;
+ pinctrl-names = "default";
};
};
@@ -52,4 +54,9 @@
renesas,groups = "scifa1_data";
renesas,function = "scifa1";
};
+
+ st1232_pins: st1232 {
+ renesas,groups = "intc_irq10";
+ renesas,function = "intc";
+ };
};
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 16/22] ARM: shmobile: armadillo-reference: Move st1232 reset GPIO to DT
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (14 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 15/22] ARM: shmobile: armadillo-reference: Add st1232 pin mappings Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 17/22] ARM: shmobile: armadillo-reference: Add LED1-LED4 to the device tree Laurent Pinchart
` (5 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Reference the st1232 reset GPIO from the device tree and remove it from
board code.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 2 ++
arch/arm/mach-shmobile/board-armadillo800eva-reference.c | 7 -------
2 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
index a6c6606..8ec4cd1 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
@@ -10,6 +10,7 @@
/dts-v1/;
/include/ "r8a7740.dtsi"
+#include <dt-bindings/gpio/gpio.h>
/ {
model = "armadillo 800 eva reference";
@@ -43,6 +44,7 @@
interrupts = <2 0>; /* IRQ10: hwirq 2 on irqpin1 */
pinctrl-0 = <&st1232_pins>;
pinctrl-names = "default";
+ gpios = <&pfc 166 GPIO_ACTIVE_LOW>;
};
};
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
index 4ddd299..002d8d3 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva-reference.c
@@ -158,7 +158,6 @@ clock_error:
*/
static void __init eva_init(void)
{
-
r8a7740_clock_init(MD_CK0 | MD_CK2);
eva_clock_init();
@@ -171,12 +170,6 @@ static void __init eva_init(void)
r8a7740_add_standard_devices_dt();
- /*
- * Touchscreen
- * TODO: Move reset GPIO over to .dts when we can reference it
- */
- gpio_request_one(166, GPIOF_OUT_INIT_HIGH, NULL); /* TP_RST_B */
-
r8a7740_pm_init();
}
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 17/22] ARM: shmobile: armadillo-reference: Add LED1-LED4 to the device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (15 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 16/22] ARM: shmobile: armadillo-reference: Move st1232 reset GPIO to DT Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 18/22] ARM: shmobile: kzm9g-reference: Move pinctrl mappings to " Laurent Pinchart
` (4 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
LED1 to LED4 are GPIO LEDs. Add corresponding DT nodes.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
index 8ec4cd1..366f729 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
@@ -34,6 +34,21 @@
regulator-boot-on;
};
+ leds {
+ compatible = "gpio-leds";
+ led1 {
+ gpios = <&pfc 102 GPIO_ACTIVE_HIGH>;
+ };
+ led2 {
+ gpios = <&pfc 111 GPIO_ACTIVE_HIGH>;
+ };
+ led3 {
+ gpios = <&pfc 110 GPIO_ACTIVE_HIGH>;
+ };
+ led4 {
+ gpios = <&pfc 177 GPIO_ACTIVE_HIGH>;
+ };
+ };
};
&i2c0 {
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 18/22] ARM: shmobile: kzm9g-reference: Move pinctrl mappings to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (16 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 17/22] ARM: shmobile: armadillo-reference: Add LED1-LED4 to the device tree Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 19/22] ARM: shmobile: kzm9g-reference: Move SDHI regulators to DT Laurent Pinchart
` (3 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Replace the pinctrl mappings in board code by device tree mappings.
For devices that are still instantiated from board code reference the
mappings as the default pin controller state to apply them at boot time.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 51 ++++++++++++++++++++++++++
arch/arm/mach-shmobile/board-kzm9g-reference.c | 40 --------------------
2 files changed, 51 insertions(+), 40 deletions(-)
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
index b6f759e..24f7b04 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
@@ -145,19 +145,70 @@
};
};
+&i2c3 {
+ pinctrl-0 = <&i2c3_pins>;
+ pinctrl-names = "default";
+};
+
&mmcif {
+ pinctrl-0 = <&mmcif_pins>;
+ pinctrl-names = "default";
+
bus-width = <8>;
vmmc-supply = <®_1p8v>;
status = "okay";
};
+&pfc {
+ pinctrl-0 = <&scifa4_pins>;
+ pinctrl-names = "default";
+
+ i2c3_pins: i2c3 {
+ renesas,groups = "i2c3_1";
+ renesas,function = "i2c3";
+ };
+
+ mmcif_pins: mmcif {
+ mux {
+ renesas,groups = "mmc0_data8_0", "mmc0_ctrl_0";
+ renesas,function = "mmc0";
+ };
+ cfg {
+ renesas,groups = "mmc0_data8_0";
+ renesas,pins = "PORT279";
+ pull-up = <1>;
+ };
+ };
+
+ scifa4_pins: scifa4 {
+ renesas,groups = "scifa4_data", "scifa4_ctrl";
+ renesas,function = "scifa4";
+ };
+
+ sdhi0_pins: sdhi0 {
+ renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd", "sdhi0_wp";
+ renesas,function = "sdhi0";
+ };
+
+ sdhi2_pins: sdhi2 {
+ renesas,groups = "sdhi2_data4", "sdhi2_ctrl";
+ renesas,function = "sdhi2";
+ };
+};
+
&sdhi0 {
+ pinctrl-0 = <&sdhi0_pins>;
+ pinctrl-names = "default";
+
vmmc-supply = <®_3p3v>;
bus-width = <4>;
status = "okay";
};
&sdhi2 {
+ pinctrl-0 = <&sdhi2_pins>;
+ pinctrl-names = "default";
+
vmmc-supply = <®_3p3v>;
bus-width = <4>;
broken-cd;
diff --git a/arch/arm/mach-shmobile/board-kzm9g-reference.c b/arch/arm/mach-shmobile/board-kzm9g-reference.c
index 6ff6ca2..fc2bb37 100644
--- a/arch/arm/mach-shmobile/board-kzm9g-reference.c
+++ b/arch/arm/mach-shmobile/board-kzm9g-reference.c
@@ -27,55 +27,15 @@
#include <linux/irqchip.h>
#include <linux/input.h>
#include <linux/of_platform.h>
-#include <linux/pinctrl/machine.h>
-#include <linux/pinctrl/pinconf-generic.h>
#include <mach/sh73a0.h>
#include <mach/common.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-static unsigned long pin_pullup_conf[] = {
- PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_UP, 0),
-};
-
-static const struct pinctrl_map kzm_pinctrl_map[] = {
- PIN_MAP_MUX_GROUP_DEFAULT("e6826000.i2c", "e6050000.pfc",
- "i2c3_1", "i2c3"),
- /* MMCIF */
- PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
- "mmc0_data8_0", "mmc0"),
- PIN_MAP_MUX_GROUP_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
- "mmc0_ctrl_0", "mmc0"),
- PIN_MAP_CONFIGS_PIN_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
- "PORT279", pin_pullup_conf),
- PIN_MAP_CONFIGS_GROUP_DEFAULT("e6bd0000.mmcif", "e6050000.pfc",
- "mmc0_data8_0", pin_pullup_conf),
- /* SCIFA4 */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "e6050000.pfc",
- "scifa4_data", "scifa4"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "e6050000.pfc",
- "scifa4_ctrl", "scifa4"),
- /* SDHI0 */
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
- "sdhi0_data4", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
- "sdhi0_ctrl", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
- "sdhi0_cd", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee100000.sdhi", "e6050000.pfc",
- "sdhi0_wp", "sdhi0"),
- /* SDHI2 */
- PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "e6050000.pfc",
- "sdhi2_data4", "sdhi2"),
- PIN_MAP_MUX_GROUP_DEFAULT("ee140000.sdhi", "e6050000.pfc",
- "sdhi2_ctrl", "sdhi2"),
-};
-
static void __init kzm_init(void)
{
sh73a0_add_standard_devices_dt();
- pinctrl_register_mappings(kzm_pinctrl_map, ARRAY_SIZE(kzm_pinctrl_map));
/* enable SD */
gpio_request_one(15, GPIOF_OUT_INIT_HIGH, NULL); /* power */
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 19/22] ARM: shmobile: kzm9g-reference: Move SDHI regulators to DT
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (17 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 18/22] ARM: shmobile: kzm9g-reference: Move pinctrl mappings to " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 20/22] ARM: shmobile: kzm9g-reference: Add LED1-LED4 to the device tree Laurent Pinchart
` (2 subsequent siblings)
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Create two GPIO-controlled fixed-voltage regulators in the
kzm9g-reference DT and remove manual configuration of the corresponding
GPIOs from board code.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 23 +++++++++++++++++++++--
arch/arm/mach-shmobile/board-kzm9g-reference.c | 6 ------
2 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
index 24f7b04..6374965 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
@@ -13,6 +13,7 @@
/dts-v1/;
/include/ "sh73a0.dtsi"
+#include <dt-bindings/gpio/gpio.h>
/ {
model = "KZM-A9-GT";
@@ -58,6 +59,24 @@
regulator-boot-on;
};
+ vmmc_sdhi0: regulator@2 {
+ compatible = "regulator-fixed";
+ regulator-name = "SDHI0 Vcc";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&pfc 15 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ vmmc_sdhi2: regulator@3 {
+ compatible = "regulator-fixed";
+ regulator-name = "SDHI2 Vcc";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&pfc 14 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
lan9220@10000000 {
compatible = "smsc,lan9220", "smsc,lan9115";
reg = <0x10000000 0x100>;
@@ -200,7 +219,7 @@
pinctrl-0 = <&sdhi0_pins>;
pinctrl-names = "default";
- vmmc-supply = <®_3p3v>;
+ vmmc-supply = <&vmmc_sdhi0>;
bus-width = <4>;
status = "okay";
};
@@ -209,7 +228,7 @@
pinctrl-0 = <&sdhi2_pins>;
pinctrl-names = "default";
- vmmc-supply = <®_3p3v>;
+ vmmc-supply = <&vmmc_sdhi2>;
bus-width = <4>;
broken-cd;
status = "okay";
diff --git a/arch/arm/mach-shmobile/board-kzm9g-reference.c b/arch/arm/mach-shmobile/board-kzm9g-reference.c
index fc2bb37..1847b4d 100644
--- a/arch/arm/mach-shmobile/board-kzm9g-reference.c
+++ b/arch/arm/mach-shmobile/board-kzm9g-reference.c
@@ -21,7 +21,6 @@
*/
#include <linux/delay.h>
-#include <linux/gpio.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/irqchip.h>
@@ -37,11 +36,6 @@ static void __init kzm_init(void)
{
sh73a0_add_standard_devices_dt();
- /* enable SD */
- gpio_request_one(15, GPIOF_OUT_INIT_HIGH, NULL); /* power */
-
- gpio_request_one(14, GPIOF_OUT_INIT_HIGH, NULL); /* power */
-
#ifdef CONFIG_CACHE_L2X0
/* Early BRESP enable, Shared attribute override enable, 64K*8way */
l2x0_init(IOMEM(0xf0100000), 0x40460000, 0x82000fff);
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 20/22] ARM: shmobile: kzm9g-reference: Add LED1-LED4 to the device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (18 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 19/22] ARM: shmobile: kzm9g-reference: Move SDHI regulators to DT Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 21/22] ARM: shmobile: marzen-reference: Move pinctrl mappings to " Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 22/22] ARM: shmobile: marzen-reference: Add LED2-LED4 to the " Laurent Pinchart
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
LED1 to LED4 are GPIO LEDs. Add corresponding DT nodes.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
index 6374965..a416eee 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
@@ -89,6 +89,22 @@
vddvario-supply = <®_1p8v>;
vdd33a-supply = <®_3p3v>;
};
+
+ leds {
+ compatible = "gpio-leds";
+ led1 {
+ gpios = <&pfc 20 GPIO_ACTIVE_LOW>;
+ };
+ led2 {
+ gpios = <&pfc 21 GPIO_ACTIVE_LOW>;
+ };
+ led3 {
+ gpios = <&pfc 22 GPIO_ACTIVE_LOW>;
+ };
+ led4 {
+ gpios = <&pfc 23 GPIO_ACTIVE_LOW>;
+ };
+ };
};
&i2c0 {
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 21/22] ARM: shmobile: marzen-reference: Move pinctrl mappings to device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (19 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 20/22] ARM: shmobile: kzm9g-reference: Add LED1-LED4 to the device tree Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
2013-06-11 22:22 ` [PATCH v5 22/22] ARM: shmobile: marzen-reference: Add LED2-LED4 to the " Laurent Pinchart
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
Replace the pinctrl mappings in board code by device tree mappings.
For devices that are still instantiated from board code reference the
mappings as the default pin controller state to apply them at boot time.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7779-marzen-reference.dts | 35 +++++++++++++++++++++++++
arch/arm/mach-shmobile/board-marzen-reference.c | 27 -------------------
2 files changed, 35 insertions(+), 27 deletions(-)
diff --git a/arch/arm/boot/dts/r8a7779-marzen-reference.dts b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
index 72be4c8..6d20247 100644
--- a/arch/arm/boot/dts/r8a7779-marzen-reference.dts
+++ b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
@@ -37,6 +37,9 @@
lan0@18000000 {
compatible = "smsc,lan9220", "smsc,lan9115";
reg = <0x18000000 0x100>;
+ pinctrl-0 = <&lan0_pins>;
+ pinctrl-names = "default";
+
phy-mode = "mii";
interrupt-parent = <&gic>;
interrupts = <0 28 0x4>;
@@ -45,3 +48,35 @@
vdd33a-supply = <&fixedregulator3v3>;
};
};
+
+&pfc {
+ pinctrl-0 = <&scif2_pins &scif4_pins &sdhi0_pins>;
+ pinctrl-names = "default";
+
+ lan0_pins: lan0 {
+ intc {
+ renesas,groups = "intc_irq1_b";
+ renesas,function = "intc";
+ };
+ lbsc {
+ renesas,groups = "lbsc_ex_cs0";
+ renesas,function = "lbsc";
+ };
+ };
+
+ scif2_pins: scif2 {
+ renesas,groups = "scif2_data_c";
+ renesas,function = "scif2";
+ };
+
+ scif4_pins: scif4 {
+ renesas,groups = "scif4_data";
+ renesas,function = "scif4";
+ };
+
+ sdhi0_pins: sdhi0 {
+ renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd",
+ "sdhi0_wp";
+ renesas,function = "sdhi0";
+ };
+};
diff --git a/arch/arm/mach-shmobile/board-marzen-reference.c b/arch/arm/mach-shmobile/board-marzen-reference.c
index 94804f3..3d1c439 100644
--- a/arch/arm/mach-shmobile/board-marzen-reference.c
+++ b/arch/arm/mach-shmobile/board-marzen-reference.c
@@ -19,41 +19,14 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <linux/pinctrl/machine.h>
#include <mach/r8a7779.h>
#include <mach/common.h>
#include <mach/irqs.h>
#include <asm/irq.h>
#include <asm/mach/arch.h>
-static const struct pinctrl_map marzen_pinctrl_map[] = {
- /* SCIF2 (CN18: DEBUG0) */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.2", "fffc0000.pfc",
- "scif2_data_c", "scif2"),
- /* SCIF4 (CN19: DEBUG1) */
- PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.4", "fffc0000.pfc",
- "scif4_data", "scif4"),
- /* SDHI0 */
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
- "sdhi0_data4", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
- "sdhi0_ctrl", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
- "sdhi0_cd", "sdhi0"),
- PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "fffc0000.pfc",
- "sdhi0_wp", "sdhi0"),
- /* SMSC */
- PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "fffc0000.pfc",
- "intc_irq1_b", "intc"),
- PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "fffc0000.pfc",
- "lbsc_ex_cs0", "lbsc"),
-};
-
static void __init marzen_init(void)
{
- pinctrl_register_mappings(marzen_pinctrl_map,
- ARRAY_SIZE(marzen_pinctrl_map));
-
r8a7779_add_standard_devices_dt();
}
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v5 22/22] ARM: shmobile: marzen-reference: Add LED2-LED4 to the device tree
2013-06-11 22:22 [PATCH v5 00/22] SH pinctrl DT support Laurent Pinchart
` (20 preceding siblings ...)
2013-06-11 22:22 ` [PATCH v5 21/22] ARM: shmobile: marzen-reference: Move pinctrl mappings to " Laurent Pinchart
@ 2013-06-11 22:22 ` Laurent Pinchart
21 siblings, 0 replies; 25+ messages in thread
From: Laurent Pinchart @ 2013-06-11 22:22 UTC (permalink / raw)
To: linux-sh
Cc: devicetree-discuss, linux-arm-kernel, Linus Walleij, Magnus Damm,
Guennadi Liakhovetski, James Hogan
LED2 to LED4 are GPIO LEDs. Add corresponding DT nodes.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
arch/arm/boot/dts/r8a7779-marzen-reference.dts | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm/boot/dts/r8a7779-marzen-reference.dts b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
index 6d20247..b64705b 100644
--- a/arch/arm/boot/dts/r8a7779-marzen-reference.dts
+++ b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
@@ -11,6 +11,7 @@
/dts-v1/;
/include/ "r8a7779.dtsi"
+#include <dt-bindings/gpio/gpio.h>
/ {
model = "marzen";
@@ -47,6 +48,19 @@
vddvario-supply = <&fixedregulator3v3>;
vdd33a-supply = <&fixedregulator3v3>;
};
+
+ leds {
+ compatible = "gpio-leds";
+ led2 {
+ gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+ };
+ led3 {
+ gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;
+ };
+ led4 {
+ gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;
+ };
+ };
};
&pfc {
--
1.8.1.5
^ permalink raw reply related [flat|nested] 25+ messages in thread