| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- From 68a7d9940935cb71440a9ff384e5859592b0dbfd Mon Sep 17 00:00:00 2001
- From: Hans de Goede <[email protected]>
- 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 <[email protected]>
- Acked-by: Maxime Ripard <[email protected]>
- ---
- drivers/pinctrl/pinctrl-sunxi-pins.h | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
- --- 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
- 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"),
- --- 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(un
- 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(un
- }
- chained_irq_exit(chip, desc);
- }
- + chained_irq_exit(chip, desc);
- }
-
- static struct of_device_id sunxi_pinctrl_match[] = {
|