ee03fc430d
Upstream commit be14811c03cf2 "pinctrl/lantiq: introduce new dedicated devicetree bindings" allows us to use each pin in the pinmux. This is useful for example in the "spi" group which contains some pins which are inputs, and some which are outputs. These can only be used once the new compatible strings for the pinctrl node are used. Additionally 0150-lantiq-pinctrl-xway.patch and the "GPIO PORT3 fix" (which was part of 0012-pinctrl-lantiq-fix-up-pinmux.patch) were replaced with their upstream variants which are also in 4.5. Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> SVN-Revision: 48283
69 lines
1.9 KiB
Diff
69 lines
1.9 KiB
Diff
From 25494c55a4007a1409f53ddbafd661636e47ea34 Mon Sep 17 00:00:00 2001
|
|
From: John Crispin <blogic@openwrt.org>
|
|
Date: Fri, 9 Aug 2013 20:38:15 +0200
|
|
Subject: [PATCH 12/36] pinctrl/lantiq: fix up pinmux
|
|
|
|
We found out how to set the gphy led pinmuxing.
|
|
|
|
Signed-off-by: John Crispin <blogic@openwrt.org>
|
|
---
|
|
drivers/pinctrl/pinctrl-xway.c | 28 ++++++++++++++++++++++++++--
|
|
1 file changed, 26 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/pinctrl/pinctrl-xway.c
|
|
+++ b/drivers/pinctrl/pinctrl-xway.c
|
|
@@ -609,10 +609,9 @@ static struct pinctrl_desc xway_pctrl_de
|
|
.confops = &xway_pinconf_ops,
|
|
};
|
|
|
|
-static inline int xway_mux_apply(struct pinctrl_dev *pctrldev,
|
|
+static int mux_apply(struct ltq_pinmux_info *info,
|
|
int pin, int mux)
|
|
{
|
|
- struct ltq_pinmux_info *info = pinctrl_dev_get_drvdata(pctrldev);
|
|
int port = PORT(pin);
|
|
u32 alt1_reg = GPIO_ALT1(pin);
|
|
|
|
@@ -632,6 +631,14 @@ static inline int xway_mux_apply(struct
|
|
return 0;
|
|
}
|
|
|
|
+static inline int xway_mux_apply(struct pinctrl_dev *pctrldev,
|
|
+ int pin, int mux)
|
|
+{
|
|
+ struct ltq_pinmux_info *info = pinctrl_dev_get_drvdata(pctrldev);
|
|
+
|
|
+ return mux_apply(info, pin, mux);
|
|
+}
|
|
+
|
|
static const struct ltq_cfg_param xway_cfg_params[] = {
|
|
{"lantiq,pull", LTQ_PINCONF_PARAM_PULL},
|
|
{"lantiq,open-drain", LTQ_PINCONF_PARAM_OPEN_DRAIN},
|
|
@@ -696,6 +703,18 @@ static void xway_gpio_free(struct gpio_c
|
|
pinctrl_free_gpio(gpio);
|
|
}
|
|
|
|
+static int xway_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
|
|
+{
|
|
+ struct ltq_pinmux_info *info = dev_get_drvdata(chip->dev);
|
|
+ int i;
|
|
+
|
|
+ for (i = 0; i < info->num_exin; i++)
|
|
+ if (info->exin[i] == offset)
|
|
+ return ltq_eiu_get_irq(i);
|
|
+
|
|
+ return -1;
|
|
+}
|
|
+
|
|
static struct gpio_chip xway_chip = {
|
|
.label = "gpio-xway",
|
|
.direction_input = xway_gpio_dir_in,
|
|
@@ -704,6 +723,7 @@ static struct gpio_chip xway_chip = {
|
|
.set = xway_gpio_set,
|
|
.request = xway_gpio_req,
|
|
.free = xway_gpio_free,
|
|
+ .to_irq = xway_gpio_to_irq,
|
|
.base = -1,
|
|
};
|
|
|