diff options
author | Zoltan Herpai <wigyori@uid0.hu> | 2014-08-27 12:09:46 +0000 |
---|---|---|
committer | Zoltan Herpai <wigyori@uid0.hu> | 2014-08-27 12:09:46 +0000 |
commit | f10f009609aac0941d750ae3a1106675e6d6656a (patch) | |
tree | 70f62106f833dc3b4882118e914ff183440e1e9d /target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch | |
parent | b3d10005c1ce3b9676580d09001e14458e410f89 (diff) | |
download | upstream-f10f009609aac0941d750ae3a1106675e6d6656a.tar.gz upstream-f10f009609aac0941d750ae3a1106675e6d6656a.tar.bz2 upstream-f10f009609aac0941d750ae3a1106675e6d6656a.zip |
sunxi: initial 3.14 patchset
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
SVN-Revision: 42313
Diffstat (limited to 'target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch')
-rw-r--r-- | target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch b/target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch new file mode 100644 index 0000000000..e653fe900f --- /dev/null +++ b/target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch @@ -0,0 +1,101 @@ +From 68a7d9940935cb71440a9ff384e5859592b0dbfd Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Sat, 14 Dec 2013 17:20:13 +0100 +Subject: [PATCH] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing + +The correct value for selecting the mmc0 function on port F pins is 2 not 4, +as per the data-sheet: +http://dl.linux-sunxi.org/A13/A13%20Datasheet%20-%20v1.12%20%282012-03-29%29.pdf + +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> +--- + drivers/pinctrl/pinctrl-sunxi-pins.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/drivers/pinctrl/pinctrl-sunxi-pins.h b/drivers/pinctrl/pinctrl-sunxi-pins.h +index 6fd8d4d..3d60669 100644 +--- a/drivers/pinctrl/pinctrl-sunxi-pins.h ++++ b/drivers/pinctrl/pinctrl-sunxi-pins.h +@@ -1932,27 +1932,27 @@ static const struct sunxi_desc_pin sun5i_a13_pins[] = { + SUNXI_PIN(SUNXI_PINCTRL_PIN_PF0, + SUNXI_FUNCTION(0x0, "gpio_in"), + SUNXI_FUNCTION(0x1, "gpio_out"), +- SUNXI_FUNCTION(0x4, "mmc0")), /* D1 */ ++ SUNXI_FUNCTION(0x2, "mmc0")), /* D1 */ + SUNXI_PIN(SUNXI_PINCTRL_PIN_PF1, + SUNXI_FUNCTION(0x0, "gpio_in"), + SUNXI_FUNCTION(0x1, "gpio_out"), +- SUNXI_FUNCTION(0x4, "mmc0")), /* D0 */ ++ SUNXI_FUNCTION(0x2, "mmc0")), /* D0 */ + SUNXI_PIN(SUNXI_PINCTRL_PIN_PF2, + SUNXI_FUNCTION(0x0, "gpio_in"), + SUNXI_FUNCTION(0x1, "gpio_out"), +- SUNXI_FUNCTION(0x4, "mmc0")), /* CLK */ ++ SUNXI_FUNCTION(0x2, "mmc0")), /* CLK */ + SUNXI_PIN(SUNXI_PINCTRL_PIN_PF3, + SUNXI_FUNCTION(0x0, "gpio_in"), + SUNXI_FUNCTION(0x1, "gpio_out"), +- SUNXI_FUNCTION(0x4, "mmc0")), /* CMD */ ++ SUNXI_FUNCTION(0x2, "mmc0")), /* CMD */ + SUNXI_PIN(SUNXI_PINCTRL_PIN_PF4, + SUNXI_FUNCTION(0x0, "gpio_in"), + SUNXI_FUNCTION(0x1, "gpio_out"), +- SUNXI_FUNCTION(0x4, "mmc0")), /* D3 */ ++ SUNXI_FUNCTION(0x2, "mmc0")), /* D3 */ + SUNXI_PIN(SUNXI_PINCTRL_PIN_PF5, + SUNXI_FUNCTION(0x0, "gpio_in"), + SUNXI_FUNCTION(0x1, "gpio_out"), +- SUNXI_FUNCTION(0x4, "mmc0")), /* D2 */ ++ SUNXI_FUNCTION(0x2, "mmc0")), /* D2 */ + /* Hole */ + SUNXI_PIN(SUNXI_PINCTRL_PIN_PG0, + SUNXI_FUNCTION(0x0, "gpio_in"), +-- +2.0.3 + +From 8d2c11e63a3302bbbdac41fc765c881da8a8eb37 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Sat, 15 Feb 2014 12:58:17 +0100 +Subject: [PATCH] pinctrl-sunxi: Fix hang on gpio irq + +Our irq handler was missing chained_irq_enter / exit calls, causing a +hard hang as soon as a gpio irq happened. + +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/pinctrl/pinctrl-sunxi.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c +index f9fabe9..d16da53 100644 +--- a/drivers/pinctrl/pinctrl-sunxi.c ++++ b/drivers/pinctrl/pinctrl-sunxi.c +@@ -13,6 +13,7 @@ + #include <linux/io.h> + #include <linux/clk.h> + #include <linux/gpio.h> ++#include <linux/irqchip/chained_irq.h> + #include <linux/irqdomain.h> + #include <linux/irqchip/chained_irq.h> + #include <linux/module.h> +@@ -670,6 +671,8 @@ static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) + struct sunxi_pinctrl *pctl = irq_get_handler_data(irq); + const unsigned long reg = readl(pctl->membase + IRQ_STATUS_REG); + ++ chained_irq_enter(chip, desc); ++ + /* Clear all interrupts */ + writel(reg, pctl->membase + IRQ_STATUS_REG); + +@@ -683,6 +686,7 @@ static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) + } + chained_irq_exit(chip, desc); + } ++ chained_irq_exit(chip, desc); + } + + static struct of_device_id sunxi_pinctrl_match[] = { +-- +2.0.3 + |