pinctrl: sunxi: Fix A20 irq pins
Subsystems (3)
cover pinctrl: sunxi: Fix A20 irq pins
Completly new version of my previous patch.
Split apart, because it are in fact 2 patches.
Both patches have their own detailed why and
how it was tested.
Regards,
Henry Paulissen (2):
pinctrl: sunxi: Remove non existing irq's
pinctrl: sunxi: Change mux setting on PI irq pins
drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c | 32 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 18 deletions(-)
Signature · 1 line
2.5.0
PATCH 1/2 pinctrl: sunxi: Remove non existing irq's
While I was testing irq's on the cubietruck I found a couple of not working irq pins. Further diving into the problem it opened up a mess called "manual".
This so called manual (A20 user manual v1.3 dated 2014-10-10) says:
Pin overview:
Page 233: EINT12 is on pin PC19 mux6.
Page 236: EINT12 is on pin PH12 mux6.
Now, it is a bit strange to have the same IRQ on 2 different pins, but I guess this could still be possible hardware wise. But then:
Pin registers:
Page 253: EINT12 is *not* on pin PC19.
Page 281: EINT12 is on pin PH12.
The manual is so contradicting that further tests had to be made to see which of the 2 statements where correct.
This patch is based on actual outcome of these tests and not what the manual says.
Test procedure used:
Connect a 1 pulse per second (GPS) line to the pin.
echo pin### > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio###/direction
echo rising > /sys/class/gpio/gpio###/edge
Check /proc/interrupts if a irq was attached and if irq's where received.
--- drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c +4 -8
@@ -343,26 +343,22 @@ static const struct sunxi_desc_pin sun7i_a20_pins[] = { SUNXI_FUNCTION(0x0, "gpio_in"), SUNXI_FUNCTION(0x1, "gpio_out"), SUNXI_FUNCTION(0x2, "nand0"), /* NCE4 */ - SUNXI_FUNCTION(0x3, "spi2"), /* CS0 */ - SUNXI_FUNCTION_IRQ(0x6, 12)), /* EINT12 */ + SUNXI_FUNCTION(0x3, "spi2")), /* CS0 */SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,20 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"nand0" ),/* NCE5 */ -SUNXI_FUNCTION (0x3 ,"spi2" ),/* CLK */ -SUNXI_FUNCTION_IRQ (0x6 ,13 )),/* EINT13 */ +SUNXI_FUNCTION (0x3 ,"spi2" )),/* CLK */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,21 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"nand0" ),/* NCE6 */ -SUNXI_FUNCTION (0x3 ,"spi2" ),/* MOSI */ -SUNXI_FUNCTION_IRQ (0x6 ,14 )),/* EINT14 */ +SUNXI_FUNCTION (0x3 ,"spi2" )),/* MOSI */ SUNXI_PIN (SUNXI_PINCTRL_PIN (C ,22 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"nand0" ),/* NCE7 */ -SUNXI_FUNCTION (0x3 ,"spi2" ),/* MISO */ -SUNXI_FUNCTION_IRQ (0x6 ,15 )),/* EINT15 */ +SUNXI_FUNCTION (0x3 ,"spi2" )),/* MISO */ SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 23), SUNXI_FUNCTION(0x0, "gpio_in"), SUNXI_FUNCTION(0x1, "gpio_out"),
Signature · 1 line
2.5.0
Re: [PATCH 1/2] pinctrl: sunxi: Remove non existing irq's
Quoted 27 lines · Henry Paulissen
While I was testing irq's on the cubietruck I found a couple of not working irq pins. Further diving into the problem it opened up a mess called "manual".
This so called manual (A20 user manual v1.3 dated 2014-10-10) says:
Pin overview:
Page 233: EINT12 is on pin PC19 mux6.
Page 236: EINT12 is on pin PH12 mux6.Now, it is a bit strange to have the same IRQ on 2 different pins, but I guess this could still be possible hardware wise. But then:
Pin registers:
Page 253: EINT12 is *not* on pin PC19.
Page 281: EINT12 is on pin PH12.The manual is so contradicting that further tests had to be made to see which of the 2 statements where correct.
This patch is based on actual outcome of these tests and not what the manual says.
Test procedure used:
Connect a 1 pulse per second (GPS) line to the pin.
Quoted 8 lines
echo pin### >
/sys/class/gpio/export
echo in > /sys/class/gpio/gpio###/direction
echo rising > /sys/class/gpio/gpio###/edgeCheck
/proc/interruptsif a irq was attached and if irq's where received.Signed-off-by Henry Paulissen <[email protected]>
Thanks!
Maxime
Signature · 10 lines
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: 819 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160229/0e3b8cc3/attachment-0001.sig>
Re: [PATCH 1/2] pinctrl: sunxi: Remove non existing irq's
In reply to Henry PaulissenQuoted 27 lines · Henry Paulissen
While I was testing irq's on the cubietruck I found a couple of not working irq pins. Further diving into the problem it opened up a mess called "manual".
This so called manual (A20 user manual v1.3 dated 2014-10-10) says:
Pin overview:
Page 233: EINT12 is on pin PC19 mux6.
Page 236: EINT12 is on pin PH12 mux6.Now, it is a bit strange to have the same IRQ on 2 different pins, but I guess this could still be possible hardware wise. But then:
Pin registers:
Page 253: EINT12 is *not* on pin PC19.
Page 281: EINT12 is on pin PH12.The manual is so contradicting that further tests had to be made to see which of the 2 statements where correct.
This patch is based on actual outcome of these tests and not what the manual says.
Test procedure used:
Connect a 1 pulse per second (GPS) line to the pin.
Quoted 8 lines
echo pin### >
/sys/class/gpio/export
echo in > /sys/class/gpio/gpio###/direction
echo rising > /sys/class/gpio/gpio###/edgeCheck
/proc/interruptsif a irq was attached and if irq's where received.Signed-off-by Henry Paulissen <[email protected]>
Patch applied with Maxime's ACK.
Yours,
Linus Walleij
PATCH 2/2 pinctrl: sunxi: Change mux setting on PI irq pins
In reply to Henry PaulissenWhile I was testing irq's on the cubietruck I found a couple of not working irq pins. Further diving into the problem it opened up a mess called "manual".
This so called manual (A20 user manual v1.3 dated 2014-10-10) says:
Pin overview:
Page 237: EINT26 is on mux 5.
Page 288: EINT26 is on mux 6.
The manual is so contradicting that further tests had to be made to see which of the 2 statements where correct.
This patch is based on actual outcome of these tests and not what the manual says.
Test procedure used:
Connect a 1 pulse per second (GPS) line to the pin.
echo pin### > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio###/direction
echo rising > /sys/class/gpio/gpio###/edge
Check /proc/interrupts if a irq was attached and if irq's where received.
Hardware used:
Henry Paulissen: Cubietruck
Andere Przywara: BananaPi M1
--- drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/pinctrl/sunxi/pinctrl-sun7i-a20.c +10 -10
@@ -956,65 +956,65 @@ static const struct sunxi_desc_pin sun7i_a20_pins[] = { SUNXI_FUNCTION(0x1, "gpio_out"), SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */ SUNXI_FUNCTION(0x3, "uart5"), /* TX */ - SUNXI_FUNCTION_IRQ(0x5, 22)), /* EINT22 */ + SUNXI_FUNCTION_IRQ(0x6, 22)), /* EINT22 */SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,11 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi0" ),/* CLK */ SUNXI_FUNCTION (0x3 ,"uart5" ),/* RX */ -SUNXI_FUNCTION_IRQ (0x5 ,23 )),/* EINT23 */ +SUNXI_FUNCTION_IRQ (0x6 ,23 )),/* EINT23 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,12 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi0" ),/* MOSI */ SUNXI_FUNCTION (0x3 ,"uart6" ),/* TX */ SUNXI_FUNCTION (0x4 ,"clk_out_a" ),/* CLK_OUT_A */ -SUNXI_FUNCTION_IRQ (0x5 ,24 )),/* EINT24 */ +SUNXI_FUNCTION_IRQ (0x6 ,24 )),/* EINT24 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,13 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi0" ),/* MISO */ SUNXI_FUNCTION (0x3 ,"uart6" ),/* RX */ SUNXI_FUNCTION (0x4 ,"clk_out_b" ),/* CLK_OUT_B */ -SUNXI_FUNCTION_IRQ (0x5 ,25 )),/* EINT25 */ +SUNXI_FUNCTION_IRQ (0x6 ,25 )),/* EINT25 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,14 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi0" ),/* CS1 */ SUNXI_FUNCTION (0x3 ,"ps2" ),/* SCK1 */ SUNXI_FUNCTION (0x4 ,"timer4" ),/* TCLKIN0 */ -SUNXI_FUNCTION_IRQ (0x5 ,26 )),/* EINT26 */ +SUNXI_FUNCTION_IRQ (0x6 ,26 )),/* EINT26 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,15 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi1" ),/* CS1 */ SUNXI_FUNCTION (0x3 ,"ps2" ),/* SDA1 */ SUNXI_FUNCTION (0x4 ,"timer5" ),/* TCLKIN1 */ -SUNXI_FUNCTION_IRQ (0x5 ,27 )),/* EINT27 */ +SUNXI_FUNCTION_IRQ (0x6 ,27 )),/* EINT27 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,16 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi1" ),/* CS0 */ SUNXI_FUNCTION (0x3 ,"uart2" ),/* RTS */ -SUNXI_FUNCTION_IRQ (0x5 ,28 )),/* EINT28 */ +SUNXI_FUNCTION_IRQ (0x6 ,28 )),/* EINT28 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,17 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi1" ),/* CLK */ SUNXI_FUNCTION (0x3 ,"uart2" ),/* CTS */ -SUNXI_FUNCTION_IRQ (0x5 ,29 )),/* EINT29 */ +SUNXI_FUNCTION_IRQ (0x6 ,29 )),/* EINT29 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,18 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi1" ),/* MOSI */ SUNXI_FUNCTION (0x3 ,"uart2" ),/* TX */ -SUNXI_FUNCTION_IRQ (0x5 ,30 )),/* EINT30 */ +SUNXI_FUNCTION_IRQ (0x6 ,30 )),/* EINT30 */ SUNXI_PIN (SUNXI_PINCTRL_PIN (I ,19 ),SUNXI_FUNCTION (0x0 ,"gpio_in" ),SUNXI_FUNCTION (0x1 ,"gpio_out" ),SUNXI_FUNCTION (0x2 ,"spi1" ),/* MISO */ SUNXI_FUNCTION (0x3 ,"uart2" ),/* RX */ -SUNXI_FUNCTION_IRQ (0x5 ,31 )),/* EINT31 */ +SUNXI_FUNCTION_IRQ (0x6 ,31 )),/* EINT31 */ SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 20), SUNXI_FUNCTION(0x0, "gpio_in"), SUNXI_FUNCTION(0x1, "gpio_out"),
Signature · 1 line
2.5.0
Re: [PATCH 2/2] pinctrl: sunxi: Change mux setting on PI irq pins
Quoted 27 lines · Henry Paulissen
While I was testing irq's on the cubietruck I found a couple of not working irq pins. Further diving into the problem it opened up a mess called "manual".
This so called manual (A20 user manual v1.3 dated 2014-10-10) says:
Pin overview:
Page 237: EINT26 is on mux 5.
Page 288: EINT26 is on mux 6.The manual is so contradicting that further tests had to be made to see which of the 2 statements where correct.
This patch is based on actual outcome of these tests and not what the manual says.
Test procedure used:
Connect a 1 pulse per second (GPS) line to the pin.
echo pin### >
/sys/class/gpio/export
echo in > /sys/class/gpio/gpio###/direction
echo rising > /sys/class/gpio/gpio###/edgeCheck
/proc/interruptsif a irq was attached and if irq's where received.
Quoted 7 lines
Hardware used:
Henry Paulissen: Cubietruck
Andere Przywara: BananaPi M1Tested-by Andre Przywara <[email protected]>Reviewed-by Andre Przywara <[email protected]>Signed-off-by Henry Paulissen <[email protected]>
Thanks !
Signature · 10 lines
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: 819 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160229/80dc7d13/attachment.sig>
Re: [PATCH 2/2] pinctrl: sunxi: Change mux setting on PI irq pins
In reply to Henry PaulissenQuoted 27 lines · Henry Paulissen
While I was testing irq's on the cubietruck I found a couple of not working irq pins. Further diving into the problem it opened up a mess called "manual".
This so called manual (A20 user manual v1.3 dated 2014-10-10) says:
Pin overview:
Page 237: EINT26 is on mux 5.
Page 288: EINT26 is on mux 6.The manual is so contradicting that further tests had to be made to see which of the 2 statements where correct.
This patch is based on actual outcome of these tests and not what the manual says.
Test procedure used:
Connect a 1 pulse per second (GPS) line to the pin.
echo pin### >
/sys/class/gpio/export
echo in > /sys/class/gpio/gpio###/direction
echo rising > /sys/class/gpio/gpio###/edgeCheck
/proc/interruptsif a irq was attached and if irq's where received.
Quoted 7 lines
Hardware used:
Henry Paulissen: Cubietruck
Andere Przywara: BananaPi M1Tested-by Andre Przywara <[email protected]>Reviewed-by Andre Przywara <[email protected]>Signed-off-by Henry Paulissen <[email protected]>
Patch applied with Maxime's ACK.
Yours,
Linus Walleij