Skip to contentSkip to conversation

add support for the SDIO pins on GXBB

PATCH Superseded Martin Blumenstingl 4 participants 16 messages Aug 28, 2016 – Sep 13, 2016

Subsystems (4)
lore
Share & tools
lore

Martin Blumenstingl

author reviewer
#0 lore raw

cover add support for the SDIO pins on GXBB

This series adds the pins for the SDIO controller (sd_emmc_a) found on Meson GXBB SoCs.

Martin Blumenstingl (2):
pinctrl: meson-gxbb: add the pins for the SDIO/sd_emmc_a controller
ARM64: dts: meson-gxbb: add the SDIO pins

 arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 12 ++++++++++++
 drivers/pinctrl/meson/pinctrl-meson-gxbb.c  | 19 +++++++++++++++++++
 2 files changed, 31 insertions(+)
Signature · 1 line
2.9.3
author reviewer
#1 lore raw

PATCH 1/2 pinctrl: meson-gxbb: add the pins for the SDIO/sd_emmc_a controller

sd_emmc_a is used a controller for the SDIO modules. This adds the pin configuration for the SDIO controller.

---
 drivers/pinctrl/meson/pinctrl-meson-gxbb.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
drivers/pinctrl/meson/pinctrl-meson-gxbb.c +19 -0
index 77da6dd..fb479b8 100644
@@ -163,6 +163,13 @@ static const unsigned int sdcard_d3_pins[] = { PIN(CARD_4, EE_OFF) };
 static const unsigned int sdcard_cmd_pins[] = { PIN(CARD_3, EE_OFF) };
 static const unsigned int sdcard_clk_pins[] = { PIN(CARD_2, EE_OFF) };
 
+static const unsigned int sdio_d0_pins[] = { PIN(GPIOX_0, EE_OFF) };
+static const unsigned int sdio_d1_pins[] = { PIN(GPIOX_1, EE_OFF) };
+static const unsigned int sdio_d2_pins[] = { PIN(GPIOX_2, EE_OFF) };
+static const unsigned int sdio_d3_pins[] = { PIN(GPIOX_3, EE_OFF) };
+static const unsigned int sdio_cmd_pins[] = { PIN(GPIOX_4, EE_OFF) };
+static const unsigned int sdio_clk_pins[] = { PIN(GPIOX_5, EE_OFF) };
+
 static const unsigned int uart_tx_a_pins[]	= { PIN(GPIOX_12, EE_OFF) };
 static const unsigned int uart_rx_a_pins[]	= { PIN(GPIOX_13, EE_OFF) };
 static const unsigned int uart_cts_a_pins[]	= { PIN(GPIOX_14, EE_OFF) };
@@ -370,6 +377,12 @@ static struct meson_pmx_group meson_gxbb_periphs_groups[] = {
 	GPIO_GROUP(GPIO_TEST_N, EE_OFF),
 
 	/* Bank X */
+	GROUP(sdio_d0,		8,	5),
+	GROUP(sdio_d1,		8,	4),
+	GROUP(sdio_d2,		8,	3),
+	GROUP(sdio_d3,		8,	2),
+	GROUP(sdio_cmd,		8,	1),
+	GROUP(sdio_clk,		8,	0),
 	GROUP(uart_tx_a,	4,	13),
 	GROUP(uart_rx_a,	4,	12),
 	GROUP(uart_cts_a,	4,	11),
@@ -507,6 +520,11 @@ static const char * const sdcard_groups[] = {
 	"sdcard_cmd", "sdcard_clk",
 };
 
+static const char * const sdio_groups[] = {
+	"sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3",
+	"sdio_cmd", "sdio_clk",
+};
+
 static const char * const uart_a_groups[] = {
 	"uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a",
 };
@@ -600,6 +618,7 @@ static struct meson_pmx_func meson_gxbb_periphs_functions[] = {
 	FUNCTION(gpio_periphs),
 	FUNCTION(emmc),
 	FUNCTION(sdcard),
+	FUNCTION(sdio),
 	FUNCTION(uart_a),
 	FUNCTION(uart_b),
 	FUNCTION(uart_c),
Signature · 1 line
2.9.3
#2 lore raw

PATCH 1/2 pinctrl: meson-gxbb: add the pins for the SDIO/sd_emmc_a controller

Quoted 4 lines · Martin Blumenstingl

sd_emmc_a is used a controller for the SDIO modules. This adds the pin configuration for the SDIO controller.

No reply from maintainers, but you obviously know what you're doing so patch applied.

Yours,
Linus Walleij

author reviewer
#3 lore raw

PATCH 1/2 pinctrl: meson-gxbb: add the pins for the SDIO/sd_emmc_a controller

Quoted 10 lines · Linus Walleij
Quoted 4 lines · Martin Blumenstingl

sd_emmc_a is used a controller for the SDIO modules. This adds the pin configuration for the SDIO controller.

No reply from maintainers, but you obviously know what you're doing so patch applied.

I forgot to reply to this one as well (sorry about that):
I received a NACK off-list for both patches because the SDIO IRQ pin is missing.

Nothing is broken with this patch applied, just one pin is missing. Depending on how you'd like to proceed you can:
- either drop the patch from your tree and wait for v2
- leave it in your tree and I'll send a patch on top of this one to add the missing pin

Please let me know how you'd like to handle this and sorry again.

Regards,
Martin

#4 lore raw

PATCH 1/2 pinctrl: meson-gxbb: add the pins for the SDIO/sd_emmc_a controller

Quoted 11 lines · Martin Blumenstingl
Quoted 10 lines · Linus Walleij
Quoted 4 lines · Martin Blumenstingl

sd_emmc_a is used a controller for the SDIO modules. This adds the pin configuration for the SDIO controller.

No reply from maintainers, but you obviously know what you're doing so patch applied.

Quoted 8 lines

I forgot to reply to this one as well (sorry about that):
I received a NACK off-list for both patches because the SDIO IRQ pin is missing.

Nothing is broken with this patch applied, just one pin is missing. Depending on how you'd like to proceed you can:
- either drop the patch from your tree and wait for v2
- leave it in your tree and I'll send a patch on top of this one to add the missing pin

The latter at this point. Patch the patch.

Thanks!

Linus Walleij

maintainer
#5 lore raw

PATCH 1/2 pinctrl: meson-gxbb: add the pins for the SDIO/sd_emmc_a controller

In reply to Linus Walleij
Quoted 10 lines · Linus Walleij
Quoted 4 lines · Martin Blumenstingl

sd_emmc_a is used a controller for the SDIO modules. This adds the pin configuration for the SDIO controller.

No reply from maintainers, but you obviously know what you're doing so patch applied.

Oh, I thought Neil already responded, but I'm not seeing it now. This patch is missing the SDIO IRQ line.

Martin can you respin?

Sorry for the lag, I'm still catching up after some vacation,

Kevin

author reviewer
#6 lore raw

PATCH 2/2 ARM64: dts: meson-gxbb: add the SDIO pins

In reply to Martin Blumenstingl

This can be passed to the sd_emmc_a controller to which the SDIO module is connected (when available).

---
 arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +12 -0
index e2dae1a..6864523 100644
@@ -355,6 +355,18 @@
 					};
 				};
 
+				sdio_pins: sdio {
+					mux {
+						groups = "sdio_d0",
+						       "sdio_d1",
+						       "sdio_d2",
+						       "sdio_d3",
+						       "sdio_cmd",
+						       "sdio_clk";
+						function = "sdio";
+					};
+				};
+
 				uart_a_pins: uart_a {
 					mux {
 						groups = "uart_tx_a",
Signature · 1 line
2.9.3
#7 lore raw

PATCH 2/2 ARM64: dts: meson-gxbb: add the SDIO pins

arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi line 372

Quoted 3 lines · Martin Blumenstingl
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +0 -0
 				uart_a_pins: uart_a {
 					mux {
 						groups = "uart_tx_a",

You shouldn't use underscores in node names. Use hyphens instead, perhaps.
https://www.mail-archive.com/linux-kernel%40vger.kernel.org/msg1122967.html
https://www.mail-archive.com/linux-kernel%40vger.kernel.org/msg1145633.html

Signature · 1 line
Rask Ingemann Lambertsen
author reviewer
#8 lore raw

PATCH 2/2 ARM64: dts: meson-gxbb: add the SDIO pins

Quoted 8 lines · Rask Ingemann Lambertsen
Quoted 3 lines · Martin Blumenstingl
                              uart_a_pins: uart_a {
                                      mux {
                                              groups = "uart_tx_a",

You shouldn't use underscores in node names. Use hyphens instead, perhaps.
https://www.mail-archive.com/linux-kernel%40vger.kernel.org/msg1122967.html
https://www.mail-archive.com/linux-kernel%40vger.kernel.org/msg1145633.html

The part which you found there is just the context of my patch, not an actual change.
However, basically all of the GXBB .dts files are using underscores in the node names.
Do "we" have to change this globally?

Regarding my patch: I got a NACK from Neil Armstrong off-list:
The SDIO IRQ pin is missing in my series.

Regards,
Martin

author reviewer
#10 lore raw

v2 cover add support for the SDIO pins on GXBB

In reply to Martin Blumenstingl

This series adds the pins for the SDIO controller (sd_emmc_a) found on Meson GXBB SoCs.

Changes since v1:
- add the missing SDIO interrupt pin:
The initial pinctrl patch was already applied to linux-pinctrl's for-next branch, so patch 1 applies on top of the already existing patch (both can be squashed if needed).
The dts patch was not applied anywhere yet, so patch 2 contains a fixed version of the patch (provided by Neil Armstrong - thanks!).

Martin Blumenstingl (1):
pinctrl: meson-gxbb: add the missing SDIO interrupt pin

Neil Armstrong (1):
ARM64: dts: meson-gxbb: add the SDIO pins

 arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 19 +++++++++++++++++++
 drivers/pinctrl/meson/pinctrl-meson-gxbb.c  |  4 +++-
 2 files changed, 22 insertions(+), 1 deletion(-)
Signature · 1 line
2.9.3
author reviewer
#11 lore raw

PATCH v2 1/2 pinctrl: meson-gxbb: add the missing SDIO interrupt pin

This adds the SDIO interrupt pin which can be used by sd_emmc_a.

Fixes 29885a656511 ("pinctrl: meson-gxbb: add the pins for the

SDIO/sd_emmc_a controller")

---
 drivers/pinctrl/meson/pinctrl-meson-gxbb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/pinctrl/meson/pinctrl-meson-gxbb.c +3 -1
index fb479b8..4a27ae0 100644
@@ -169,6 +169,7 @@ static const unsigned int sdio_d2_pins[] = { PIN(GPIOX_2, EE_OFF) };
 static const unsigned int sdio_d3_pins[] = { PIN(GPIOX_3, EE_OFF) };
 static const unsigned int sdio_cmd_pins[] = { PIN(GPIOX_4, EE_OFF) };
 static const unsigned int sdio_clk_pins[] = { PIN(GPIOX_5, EE_OFF) };
+static const unsigned int sdio_irq_pins[] = { PIN(GPIOX_7, EE_OFF) };
 
 static const unsigned int uart_tx_a_pins[]	= { PIN(GPIOX_12, EE_OFF) };
 static const unsigned int uart_rx_a_pins[]	= { PIN(GPIOX_13, EE_OFF) };
@@ -383,6 +384,7 @@ static struct meson_pmx_group meson_gxbb_periphs_groups[] = {
 	GROUP(sdio_d3,		8,	2),
 	GROUP(sdio_cmd,		8,	1),
 	GROUP(sdio_clk,		8,	0),
+	GROUP(sdio_irq,		8,	11),
 	GROUP(uart_tx_a,	4,	13),
 	GROUP(uart_rx_a,	4,	12),
 	GROUP(uart_cts_a,	4,	11),
@@ -522,7 +524,7 @@ static const char * const sdcard_groups[] = {
 
 static const char * const sdio_groups[] = {
 	"sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3",
-	"sdio_cmd", "sdio_clk",
+	"sdio_cmd", "sdio_clk", "sdio_irq",
 };
 
 static const char * const uart_a_groups[] = {
Signature · 1 line
2.9.3
author reviewer
#14 lore raw

PATCH v2 2/2 ARM64: dts: meson-gxbb: add the SDIO pins

In reply to Martin Blumenstingl

From: Neil Armstrong <[email protected]>

This is used to configure the pins of the sd_emmc_a controller to which an SDIO module is connected (when available).

---
 arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +19 -0
index c84cacf..fe2a1fc 100644
@@ -394,6 +394,25 @@
 					};
 				};
 
+				sdio_pins: sdio {
+					mux {
+						groups = "sdio_d0",
+						       "sdio_d1",
+						       "sdio_d2",
+						       "sdio_d3",
+						       "sdio_cmd",
+						       "sdio_clk";
+						function = "sdio";
+					};
+				};
+
+				sdio_irq_pins: sdio_irq {
+					mux {
+						groups = "sdio_irq";
+						function = "sdio";
+					};
+				};
+
 				uart_a_pins: uart_a {
 					mux {
 						groups = "uart_tx_a",
Signature · 1 line
2.9.3