All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] pinctrl-sunxi: various fixes
@ 2014-02-17 21:19 Hans de Goede
  2014-02-17 21:19 ` [PATCH 1/4] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing Hans de Goede
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Hans de Goede @ 2014-02-17 21:19 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Linus,

Here are 4 fixes for pinctrl-sunxi, the first one was send a long time ago,
but somehow never managed to find its way into 3.14-rc3. An identical patch
to the second one was already send by Chen-Yu Tsai, we both came up with
the same fix separately, it is included merely for completeness. Patches
3 and 4 are new and should speak for themselves.

I believe all of this is stable material. I've neglected to add a CC: stable
myself, if you agree this is stable material please do so.

Thanks & Regards,

Hans

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/4] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing
  2014-02-17 21:19 [PATCH 1/4] pinctrl-sunxi: various fixes Hans de Goede
@ 2014-02-17 21:19 ` Hans de Goede
  2014-02-25  8:31   ` Linus Walleij
  2014-02-17 21:19 ` [PATCH 2/4] pinctrl-sunxi: Fix hang on gpio irq Hans de Goede
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Hans de Goede @ 2014-02-17 21:19 UTC (permalink / raw)
  To: linux-arm-kernel

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"),
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/4] pinctrl-sunxi: Fix hang on gpio irq
  2014-02-17 21:19 [PATCH 1/4] pinctrl-sunxi: various fixes Hans de Goede
  2014-02-17 21:19 ` [PATCH 1/4] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing Hans de Goede
@ 2014-02-17 21:19 ` Hans de Goede
  2014-02-25  8:33   ` Linus Walleij
  2014-02-17 21:19 ` [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type Hans de Goede
  2014-02-17 21:19 ` [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation Hans de Goede
  3 siblings, 1 reply; 11+ messages in thread
From: Hans de Goede @ 2014-02-17 21:19 UTC (permalink / raw)
  To: linux-arm-kernel

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 | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c
index 74635cc..cc9bd1b 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/module.h>
 #include <linux/of.h>
@@ -665,9 +666,12 @@ static struct irq_chip sunxi_pinctrl_irq_chip = {
 
 static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
 {
+	struct irq_chip *chip = irq_get_chip(irq);
 	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);
 
@@ -679,6 +683,7 @@ static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
 			generic_handle_irq(pin_irq);
 		}
 	}
+	chained_irq_exit(chip, desc);
 }
 
 static struct of_device_id sunxi_pinctrl_match[] = {
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type
  2014-02-17 21:19 [PATCH 1/4] pinctrl-sunxi: various fixes Hans de Goede
  2014-02-17 21:19 ` [PATCH 1/4] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing Hans de Goede
  2014-02-17 21:19 ` [PATCH 2/4] pinctrl-sunxi: Fix hang on gpio irq Hans de Goede
@ 2014-02-17 21:19 ` Hans de Goede
  2014-02-18  7:49   ` Maxime Ripard
  2014-02-25  8:35   ` Linus Walleij
  2014-02-17 21:19 ` [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation Hans de Goede
  3 siblings, 2 replies; 11+ messages in thread
From: Hans de Goede @ 2014-02-17 21:19 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/pinctrl/pinctrl-sunxi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c
index cc9bd1b..917af0a 100644
--- a/drivers/pinctrl/pinctrl-sunxi.c
+++ b/drivers/pinctrl/pinctrl-sunxi.c
@@ -583,7 +583,7 @@ static int sunxi_pinctrl_irq_set_type(struct irq_data *d,
 	spin_lock_irqsave(&pctl->lock, flags);
 
 	regval = readl(pctl->membase + reg);
-	regval &= ~IRQ_CFG_IRQ_MASK;
+	regval &= ~(IRQ_CFG_IRQ_MASK << index);
 	writel(regval | (mode << index), pctl->membase + reg);
 
 	spin_unlock_irqrestore(&pctl->lock, flags);
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation
  2014-02-17 21:19 [PATCH 1/4] pinctrl-sunxi: various fixes Hans de Goede
                   ` (2 preceding siblings ...)
  2014-02-17 21:19 ` [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type Hans de Goede
@ 2014-02-17 21:19 ` Hans de Goede
  2014-02-18  8:05   ` Maxime Ripard
  2014-02-25  8:38   ` Linus Walleij
  3 siblings, 2 replies; 11+ messages in thread
From: Hans de Goede @ 2014-02-17 21:19 UTC (permalink / raw)
  To: linux-arm-kernel

This fixing setting the interrupt type for eints >= 8.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/pinctrl/pinctrl-sunxi.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-sunxi.h b/drivers/pinctrl/pinctrl-sunxi.h
index 01c494f..552b0e9 100644
--- a/drivers/pinctrl/pinctrl-sunxi.h
+++ b/drivers/pinctrl/pinctrl-sunxi.h
@@ -511,7 +511,7 @@ static inline u32 sunxi_pull_offset(u16 pin)
 
 static inline u32 sunxi_irq_cfg_reg(u16 irq)
 {
-	u8 reg = irq / IRQ_CFG_IRQ_PER_REG;
+	u8 reg = irq / IRQ_CFG_IRQ_PER_REG * 0x04;
 	return reg + IRQ_CFG_REG;
 }
 
@@ -523,7 +523,7 @@ static inline u32 sunxi_irq_cfg_offset(u16 irq)
 
 static inline u32 sunxi_irq_ctrl_reg(u16 irq)
 {
-	u8 reg = irq / IRQ_CTRL_IRQ_PER_REG;
+	u8 reg = irq / IRQ_CTRL_IRQ_PER_REG * 0x04;
 	return reg + IRQ_CTRL_REG;
 }
 
@@ -535,7 +535,7 @@ static inline u32 sunxi_irq_ctrl_offset(u16 irq)
 
 static inline u32 sunxi_irq_status_reg(u16 irq)
 {
-	u8 reg = irq / IRQ_STATUS_IRQ_PER_REG;
+	u8 reg = irq / IRQ_STATUS_IRQ_PER_REG * 0x04;
 	return reg + IRQ_STATUS_REG;
 }
 
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type
  2014-02-17 21:19 ` [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type Hans de Goede
@ 2014-02-18  7:49   ` Maxime Ripard
  2014-02-25  8:35   ` Linus Walleij
  1 sibling, 0 replies; 11+ messages in thread
From: Maxime Ripard @ 2014-02-18  7:49 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Mon, Feb 17, 2014 at 10:19:43PM +0100, Hans de Goede wrote:
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140218/3e77537a/attachment.sig>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation
  2014-02-17 21:19 ` [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation Hans de Goede
@ 2014-02-18  8:05   ` Maxime Ripard
  2014-02-25  8:38   ` Linus Walleij
  1 sibling, 0 replies; 11+ messages in thread
From: Maxime Ripard @ 2014-02-18  8:05 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 17, 2014 at 10:19:44PM +0100, Hans de Goede wrote:
> This fixing setting the interrupt type for eints >= 8.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140218/f4608c70/attachment.sig>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/4] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing
  2014-02-17 21:19 ` [PATCH 1/4] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing Hans de Goede
@ 2014-02-25  8:31   ` Linus Walleij
  0 siblings, 0 replies; 11+ messages in thread
From: Linus Walleij @ 2014-02-25  8:31 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 17, 2014 at 10:19 PM, Hans de Goede <hdegoede@redhat.com> wrote:

> 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>

Patch applied.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/4] pinctrl-sunxi: Fix hang on gpio irq
  2014-02-17 21:19 ` [PATCH 2/4] pinctrl-sunxi: Fix hang on gpio irq Hans de Goede
@ 2014-02-25  8:33   ` Linus Walleij
  0 siblings, 0 replies; 11+ messages in thread
From: Linus Walleij @ 2014-02-25  8:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 17, 2014 at 10:19 PM, Hans de Goede <hdegoede@redhat.com> wrote:

> 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>

I have already applied the identical patch from
Chen-Yu Tsai for fixes so dropping this.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type
  2014-02-17 21:19 ` [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type Hans de Goede
  2014-02-18  7:49   ` Maxime Ripard
@ 2014-02-25  8:35   ` Linus Walleij
  1 sibling, 0 replies; 11+ messages in thread
From: Linus Walleij @ 2014-02-25  8:35 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 17, 2014 at 10:19 PM, Hans de Goede <hdegoede@redhat.com> wrote:

> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Patch applied with Maxime's ACK.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation
  2014-02-17 21:19 ` [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation Hans de Goede
  2014-02-18  8:05   ` Maxime Ripard
@ 2014-02-25  8:38   ` Linus Walleij
  1 sibling, 0 replies; 11+ messages in thread
From: Linus Walleij @ 2014-02-25  8:38 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Feb 17, 2014 at 10:19 PM, Hans de Goede <hdegoede@redhat.com> wrote:

> This fixing setting the interrupt type for eints >= 8.
>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Patch applied with Maxime's ACK.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-02-25  8:38 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-17 21:19 [PATCH 1/4] pinctrl-sunxi: various fixes Hans de Goede
2014-02-17 21:19 ` [PATCH 1/4] pinctrl-sunxi: Fix sun5i-a13 port F multiplexing Hans de Goede
2014-02-25  8:31   ` Linus Walleij
2014-02-17 21:19 ` [PATCH 2/4] pinctrl-sunxi: Fix hang on gpio irq Hans de Goede
2014-02-25  8:33   ` Linus Walleij
2014-02-17 21:19 ` [PATCH 3/4] pinctrl-sunxi: Fix masking when setting irq type Hans de Goede
2014-02-18  7:49   ` Maxime Ripard
2014-02-25  8:35   ` Linus Walleij
2014-02-17 21:19 ` [PATCH 4/4] pinctrl-sunxi: Fix interrupt register offset calculation Hans de Goede
2014-02-18  8:05   ` Maxime Ripard
2014-02-25  8:38   ` Linus Walleij

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.