Re: [PATCH 0/2] arm64: dts: renesas: r8a779a0: Add INTC-EX support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Geert,

I've been trying to test this on the Falcon-V3U


On 24/06/2021 09:07, Geert Uytterhoeven wrote:
> Hi Kieran,
> 
> On Wed, Jun 23, 2021 at 6:13 PM Kieran Bingham
> <kieran.bingham@xxxxxxxxxxxxxxxx> wrote:
>> On 23/06/2021 16:02, Geert Uytterhoeven wrote:
>>> This patch series adds support for the Interrupt Controller for External
>>> Devices (INT-EC) in the Renesas R-Car V3U (r8a779a0) SoC.
>>>
>>> As there are two known issues, I'm posting this to a limited audience:
>>>
>>>   1. External interrupts have not been tested.
>>>
>>>      Kieran: perhaps IRQ0 can be tested on Falcon with the MIPI DSI/eDP
>>>      bridge, by changing
>>>
>>>        -    interrupt-parent = <&gpio1>;
>>>        -    interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
>>>        +    interrupt-parent = <&intc_ex>;
>>>        +    interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
>>>
>>>      ? The "ti,sn65dsi86" driver doesn't seem to use interrupts, though,
>>>      so I don't know how feasible this is.
>>
>> I can add an interrupt handler if that's what you need, but I suspect
>> that the change here simply 're-routes' the interrupt through the
>> intc_ex so that it still needs an interrupt to be generated by the
>> SN65DSI86? is that right?
> 
> Correct, you need to make the SN65DSI86 generate an interrupt, too.
> No idea how to do that...

I'm going to ignore the SN65DSI86, and go with a route that I can
explicitly control ... so IRQ2 it is.



> 
>>>      Alternatively, with physical access, IRQ0 is available on test
>>>      point CP47, and IRQ2 on the GPIO CN.
>>
>> I do have physical access, so I can trigger this - Is there a suitable
>> voltage or condition I can apply? (I.e. take a signal from a nearby pin
>> to short it?)
> 
> As IRQ0 is driven by the single gate U59, you better don't cause logic
> conflicts, and play with IRQ2 instead.
> 
> Note that high level is SPI_D1.8V/3.3V, which is 1.8V by default!
> The GPIO CN connector carries a.o. SPI_D1.8V/3.3V and GND.
> Internal pull-up should be enabled for IRQ2 by reset state, but you
> may want to measure the pin's voltage to be sure.

Pin7 appears to be IRQ2. It is reading at 1.8v.
Pin 5 (SPI_D1.8v/3.3v) is reading at 1.8v
Pin 3 (D3.3v) no prizes for guessing here.

And of course pin 1 is ground.

So I have some wires I can play with.


> To configure pin control, you need to add the following, and hook it
> up to the pfc node:
> 
>         irq2_pins: irq2 {
>                 groups = "intc_ex_irq2";
>                 function = "intc_ex";
>         };
> 
> You should be able to test this using gpio-keys, with a key subnode that
> has an interrupts instead of a gpios property.


I'm afraid I haven't been able to successfully test this. I have this
series applied and have tried the following:



diff --git a/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
b/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
index dc671ff57ec7..1286b553e370 100644
--- a/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
@@ -10,6 +10,10 @@
 #include "r8a779a0-falcon-csi-dsi.dtsi"
 #include "r8a779a0-falcon-ethernet.dtsi"

+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+
 / {
 	model = "Renesas Falcon CPU and Breakout boards based on r8a779a0";
 	compatible = "renesas,falcon-breakout", "renesas,falcon-cpu",
"renesas,r8a779a0";
@@ -17,6 +21,23 @@ / {
 	aliases {
 		ethernet0 = &avb0;
 	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+
+		btn1 {
+			pinctrl-0 = <&irq2_pins>;
+			pinctrl-names = "default";
+
+			debounce-interval = <50>;
+			label = "button1";
+			linux,code = <KEY_1>;
+			interrupt-parent = <&intc_ex>;
+			interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+
+			//gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
+		};
+	};
 };

 &avb0 {
@@ -45,6 +66,14 @@ eeprom@51 {
 };

 &pfc {
+	// Intc_ex testing
+	irq2_pins: irq2 {
+		groups = "intc_ex_irq2";
+		function = "intc_ex";
+
+		bias-pull-up;
+	};
+
 	avb0_pins: avb0 {
 		mux {
 			groups = "avb0_link", "avb0_mdio", "avb0_rgmii",
diff --git a/drivers/pinctrl/renesas/core.c b/drivers/pinctrl/renesas/core.c
index ef8ef05ba930..966883c6c64c 100644
--- a/drivers/pinctrl/renesas/core.c
+++ b/drivers/pinctrl/renesas/core.c
@@ -228,7 +228,7 @@ static void sh_pfc_write_config_reg(struct sh_pfc *pfc,

 	sh_pfc_config_reg_helper(pfc, crp, field, &mapped_reg, &mask, &pos);

-	dev_dbg(pfc->dev, "write_reg addr = %x, value = 0x%x, field = %u, "
+	dev_err(pfc->dev, "KB: write_reg addr = %x, value = 0x%x, field = %u, "
 		"r_width = %u, f_width = %u\n",
 		crp->reg, value, field, crp->reg_width, hweight32(mask));





And I have ribbon cable with the pitch for cn4 now which allows me to
connect pin 7 to pin 1 to ground it.


I use
 sudo evtest /dev/input/event0

to monitor the line for changes, and grounding pin7 has no effect in
this configuration.


However, to try to sanity check my test, I changed the gpio-keys to use
gpio1 26 directly - disabling the pinctrl, and using the gpios reference
directly instead :


diff --git a/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
b/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
index 1286b553e370..af85881de2c4 100644
--- a/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
+++ b/arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
@@ -26,16 +26,11 @@ gpio_keys {
                compatible = "gpio-keys";

                btn1 {
-                       pinctrl-0 = <&irq2_pins>;
-                       pinctrl-names = "default";
-
                        debounce-interval = <50>;
                        label = "button1";
                        linux,code = <KEY_1>;
-                       interrupt-parent = <&intc_ex>;
-                       interrupts = <2 IRQ_TYPE_LEVEL_LOW>;

-                       //gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
+                       gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
                };
        };
 };


This shows active key events when grounding pin 7 to pin 1...
> kbingham@falcon-v3u:~$ sudo evtest /dev/input/event0
> Input driver version is 1.0.1
> Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
> Input device name: "gpio_keys"
> Supported events:
>   Event type 0 (EV_SYN)
>   Event type 1 (EV_KEY)
>     Event code 2 (KEY_1)
> Properties:
> Testing ... (interrupt to exit)
> Event: time 1632319971.126234, type 1 (EV_KEY), code 2 (KEY_1), value 1
> Event: time 1632319971.126234, -------------- SYN_REPORT ------------
> Event: time 1632319971.579966, type 1 (EV_KEY), code 2 (KEY_1), value 0
> Event: time 1632319971.579966, -------------- SYN_REPORT ------------
> Event: time 1632319981.461018, type 1 (EV_KEY), code 2 (KEY_1), value 1
> Event: time 1632319981.461018, -------------- SYN_REPORT ------------
> Event: time 1632319981.835693, type 1 (EV_KEY), code 2 (KEY_1), value 0
> Event: time 1632319981.835693, -------------- SYN_REPORT ------------
> Event: time 1632319982.112104, type 1 (EV_KEY), code 2 (KEY_1), value 1
> Event: time 1632319982.112104, -------------- SYN_REPORT ------------



If there's anything else you'd like me to test or change let me know.

--
Kieran





> 
> This might be a good opportunity to wire up the slide and push switches
> (SW46-49) as gpio-keys, too...
> 
> Thanks!
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
> 

-- 
--
Kieran



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux