Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Unable to handle kernel paging request at virtual address ffff000018664000 #544

Open
3 tasks done
caipiblack opened this issue Nov 19, 2024 · 3 comments
Open
3 tasks done

Comments

@caipiblack
Copy link

caipiblack commented Nov 19, 2024

Checklist

  • Checked the issue tracker for similar issues to ensure this is not a duplicate.
  • Provided a clear description of your suggestion.
  • Included any relevant context or examples.

Issue or Suggestion Description

Setup informations

  • Commit: 927a34f99724bb744efaf865a7c75cc1615f59a2
  • Custom board: Based on R9A07G043U15GBG#AC0 using Yocto
  • Kernel: Linux hubmz-rzg2ul 5.10.201-cip41-yocto-standard #1 SMP PREEMPT Sat Feb 27 02:21:18 UTC 2021 aarch64 GNU/Linux
  • Using ESP32C3 NG driver with SPI interface

Description of the problem

We have a oops message when we connect to WiFi accesspoint, but it can be "random":

  • Sometimes it's difficult to produce
  • Sometimes it's easy to produce (like 100% rate)

The oops message:

[   66.357269] Unable to handle kernel paging request at virtual address ffff000018664000
[   66.389632] Mem abort info:
[   66.392912]   ESR = 0x96000147
[   66.411592]   EC = 0x25: DABT (current EL), IL = 32 bits
[   66.429593]   SET = 0, FnV = 0
[   66.432661]   EA = 0, S1PTW = 0
[   66.456502] Data abort info:
[   66.461627]   ISV = 0, ISS = 0x00000147
[   66.475342]   CM = 1, WnR = 1
[   66.483751] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000048fc6000
[   66.517616] [ffff000018664000] pgd=000000007fff9003, p4d=000000007fff9003, pud=000000007fff8003, pmd=000000007ff7a003, pte=0068000058664706
[   66.566780] Internal error: Oops: 0000000096000147 [#1] PREEMPT SMP
[   66.573049] Modules linked in: esp_hosted_ng(O)
[   66.577578] CPU: 0 PID: 135 Comm: kworker/0:17 Tainted: G           O      5.10.201-cip41-yocto-standard #1
[   66.587278] Hardware name: Development board based on r9a07g043u11 (DT)
[   66.593886] Workqueue: ESP_SPI_WORK_QUEUE esp_spi_work [esp_hosted_ng]
[   66.600392] pstate: 80c00005 (Nzcv daif +PAN +UAO -TCO BTYPE=--)
[   66.606384] pc : __clean_dcache_area_poc+0x20/0x38
[   66.611157] lr : arch_sync_dma_for_device+0x20/0x30
[   66.616012] sp : ffff8000122439e0
[   66.619312] x29: ffff8000122439e0 x28: ffff0000185a1d80 
[   66.624606] x27: 0000000000000000 x26: ffff00000af8f810 
[   66.629899] x25: 0000000000000000 x24: 0000000000000000 
[   66.635192] x23: 0000000000000001 x22: fffffdffffe00000 
[   66.640484] x21: ffff800010d24120 x20: ffff8000110fb7e0 
[   66.645777] x19: 0000000000000001 x18: 0000000000000000 
[   66.651070] x17: 0000000000000000 x16: 0000000000000000 
[   66.656362] x15: ffff000018587a18 x14: 000000000000012d 
[   66.661655] x13: 000000000000012d x12: 0000000000000000 
[   66.666948] x11: 0000000000000001 x10: 0000000000000940 
[   66.672240] x9 : ffff800011fe0590 x8 : ffff0000185a1da0 
[   66.677532] x7 : 0000000000000c40 x6 : 00000000ffffffff 
[   66.682825] x5 : 000000005866427f x4 : 0000000000000002 
[   66.688117] x3 : 000000000000003f x2 : 0000000000000040 
[   66.693410] x1 : ffff000018664280 x0 : ffff000018664000 
[   66.698703] Call trace:
[   66.701142]  __clean_dcache_area_poc+0x20/0x38
[   66.705571]  dma_direct_map_sg+0x194/0x290
[   66.709651]  dma_map_sg_attrs+0x44/0xac
[   66.713477]  spi_map_buf+0x18c/0x270
[   66.717038]  __spi_pump_messages+0x2c0/0x590
[   66.721290]  __spi_sync+0x234/0x26c
[   66.724765]  spi_sync+0x30/0x54
[   66.727897]  spi_sync_transfer.constprop.0+0x5c/0x84 [esp_hosted_ng]
[   66.734228]  esp_spi_work+0x198/0x3ec [esp_hosted_ng]
[   66.739261]  process_one_work+0x1cc/0x370
[   66.743254]  worker_thread+0x13c/0x490
[   66.746988]  kthread+0x154/0x160
[   66.750205]  ret_from_fork+0x10/0x38
[   66.753769] Code: 9ac32042 8b010001 d1000443 8a230000 (d50b7a20) 
[   66.759839] ---[ end trace cecf4114396052fa ]---

There are some issues talking about similar oops message (#482, #191), but this is not the same stack trace, that's why I create a new issue (I think it is not related). In my case it's when SPI is used and seems to be related to DMA.

We always had this issue, but never really looked at, now we are looking to fix it because it is very anoying.

The dmesg looks like this:

root@hubmz-rzg2ul:~# dmesg | grep esp
[    6.336062] esp_hosted_ng: loading out-of-tree module taints kernel.
[    6.595015] esp_hosted_ng: spi_dev_init: Using SPI MODE 2
[    6.623677] esp_hosted_ng: spi_dev_init: ESP32 peripheral is registered to SPI bus [0],chip select [0], SPI Clock [10]
[    8.038095] esp_hosted_ng: process_esp_bootup_event: Received ESP bootup event
[    8.045416] esp_hosted_ng: process_event_esp_bootup: Bootup Event tag: 3
[    8.052397] esp_hosted_ng: esp_validate_chipset: Chipset=ESP32-C3 ID=05 detected over SPI
[    8.060618] esp_hosted_ng: process_event_esp_bootup: Bootup Event tag: 2
[    8.067350] esp_hosted_ng: adjust_spi_clock: ESP Reconfigure SPI CLK to 30 MHz
[    8.074603] esp_hosted_ng: process_event_esp_bootup: Bootup Event tag: 0
[    8.081332] esp_hosted_ng: process_event_esp_bootup: Bootup Event tag: 1
[    8.088061] esp_hosted_ng: process_fw_data: ESP chipset's last reset cause:
[    8.095049] esp_hosted_ng: print_reset_reason: POWERON_RESET
[    8.100707] esp_hosted_ng: check_esp_version: ESP-Hosted Version: NG-1.0.2.0.1
[    8.118989] esp_hosted_ng: esp_reg_notifier: Driver init is ongoing
[    8.160191] esp_hosted_ng: print_capabilities: Capabilities: 0xa8. Features supported are:
[    8.168595] esp_hosted_ng: print_capabilities: 	 * WLAN on SPI
[    9.046884] esp_hosted_ng: esp_reg_notifier: cfg80211 regulatory domain callback for 00, current=\x00\x00
[   21.605163] esp_hosted_ng: cmd_auth_request: Authentication request: 60:38:e0:cd:92:69 8 0 0 0
[   21.914539] esp_hosted_ng: cmd_assoc_request: Association request: 60:38:e0:cd:92:69 8 35
[   22.008540] esp_hosted_ng: process_assoc_event: Connection status: 0
[   22.245348] esp_hosted_ng: esp_inetaddr_event: NETDEV_UP interface wlan0 ip changed to  192.168.003.243
[   47.608514] esp_hosted_ng: process_disconnect_event: Disconnect event for ssid Linksys-DEA9 [reason:3]
[   47.652211] esp_hosted_ng: esp_inetaddr_event: Interface wlan0 Down: 0
[   47.666518] esp_hosted_ng: esp_reg_notifier: cfg80211 regulatory domain callback for 00, current=00

The DTS looks like this:

**** fdtdump is a low-level debugging tool, not meant for general use.
**** If you want to decompile a dtb, you probably want
****     dtc -I dtb -O dts <filename>

/dts-v1/;
// magic:		0xd00dfeed
// totalsize:		0x6e46 (28230)
// off_dt_struct:	0x38
// off_dt_strings:	0x6730
// off_mem_rsvmap:	0x28
// version:		17
// last_comp_version:	16
// boot_cpuid_phys:	0x0
// size_dt_strings:	0x716
// size_dt_struct:	0x66f8

/ {
    compatible = "renesas,r9a07g043u11-dev", "renesas,r9a07g043", "renesas,r9a07g043u11";
    #address-cells = <0x00000002>;
    #size-cells = <0x00000002>;
    model = "Development board based on r9a07g043u11";
    audio1-clk {
        compatible = "fixed-clock";
        #clock-cells = <0x00000000>;
        clock-frequency = <0x00000000>;
        phandle = <0x00000005>;
    };
    audio2-clk {
        compatible = "fixed-clock";
        #clock-cells = <0x00000000>;
        clock-frequency = <0x00000000>;
        phandle = <0x00000006>;
    };
    can-clk {
        compatible = "fixed-clock";
        #clock-cells = <0x00000000>;
        clock-frequency = <0x00000000>;
        phandle = <0x0000000e>;
    };
    extal-clk {
        compatible = "fixed-clock";
        #clock-cells = <0x00000000>;
        clock-frequency = <0x016e3600>;
        phandle = <0x00000014>;
    };
    firmware {
        optee {
            compatible = "linaro,optee-tz";
            method = "smc";
            status = "disabled";
        };
    };
    opp-table-0 {
        compatible = "operating-points-v2";
        opp-shared;
        phandle = <0x00000003>;
        opp-125000000 {
            opp-hz = <0x00000000 0x07735940>;
            opp-microvolt = <0x0010c8e0>;
            clock-latency-ns = <0x000493e0>;
        };
        opp-250000000 {
            opp-hz = <0x00000000 0x0ee6b280>;
            opp-microvolt = <0x0010c8e0>;
            clock-latency-ns = <0x000493e0>;
        };
        opp-500000000 {
            opp-hz = <0x00000000 0x1dcd6500>;
            opp-microvolt = <0x0010c8e0>;
            clock-latency-ns = <0x000493e0>;
        };
        opp-1000000000 {
            opp-hz = <0x00000000 0x3b9aca00>;
            opp-microvolt = <0x0010c8e0>;
            clock-latency-ns = <0x000493e0>;
            opp-suspend;
        };
    };
    cpus {
        #address-cells = <0x00000001>;
        #size-cells = <0x00000000>;
        cpu@0 {
            compatible = "arm,cortex-a55";
            reg = <0x00000000>;
            device_type = "cpu";
            #cooling-cells = <0x00000002>;
            next-level-cache = <0x00000001>;
            enable-method = "psci";
            clocks = <0x00000002 0x00000000 0x00000000>;
            operating-points-v2 = <0x00000003>;
            phandle = <0x0000002b>;
        };
        cache-controller-0 {
            compatible = "cache";
            cache-unified;
            cache-size = <0x00040000>;
            phandle = <0x00000001>;
        };
    };
    psci {
        compatible = "arm,psci-1.0", "arm,psci-0.2";
        method = "smc";
    };
    soc {
        compatible = "simple-bus";
        interrupt-parent = <0x00000004>;
        #address-cells = <0x00000002>;
        #size-cells = <0x00000002>;
        ranges;
        timer@10001200 {
            compatible = "renesas,r9a07g043-mtu3", "renesas,rz-mtu3";
            reg = <0x00000000 0x10001200 0x00000000 0x00000b00>;
            interrupts = <0x00000000 0x000000aa 0x00000001 0x00000000 0x000000ab 0x00000001 0x00000000 0x000000ac 0x00000001 0x00000000 0x000000ad 0x00000001 0x00000000 0x000000ae 0x00000001 0x00000000 0x000000af 0x00000001 0x00000000 0x000000b0 0x00000001 0x00000000 0x000000b1 0x00000001 0x00000000 0x000000b2 0x00000001 0x00000000 0x000000b3 0x00000001 0x00000000 0x000000b4 0x00000001 0x00000000 0x000000b5 0x00000001 0x00000000 0x000000b6 0x00000001 0x00000000 0x000000b7 0x00000001 0x00000000 0x000000b8 0x00000001 0x00000000 0x000000b9 0x00000001 0x00000000 0x000000ba 0x00000001 0x00000000 0x000000bb 0x00000001 0x00000000 0x000000bc 0x00000001 0x00000000 0x000000bd 0x00000001 0x00000000 0x000000be 0x00000001 0x00000000 0x000000bf 0x00000001 0x00000000 0x000000c0 0x00000001 0x00000000 0x000000c1 0x00000001 0x00000000 0x000000c2 0x00000001 0x00000000 0x000000c3 0x00000001 0x00000000 0x000000c4 0x00000001 0x00000000 0x000000c5 0x00000001 0x00000000 0x000000c6 0x00000001 0x00000000 0x000000c7 0x00000001 0x00000000 0x000000c8 0x00000001 0x00000000 0x000000c9 0x00000001 0x00000000 0x000000ca 0x00000001 0x00000000 0x000000cb 0x00000001 0x00000000 0x000000cc 0x00000001 0x00000000 0x000000cd 0x00000001 0x00000000 0x000000ce 0x00000001 0x00000000 0x000000cf 0x00000001 0x00000000 0x000000d0 0x00000001 0x00000000 0x000000d1 0x00000001 0x00000000 0x000000d2 0x00000001 0x00000000 0x000000d3 0x00000001 0x00000000 0x000000d4 0x00000001 0x00000000 0x000000d5 0x00000001>;
            interrupt-names = "tgia0", "tgib0", "tgic0", "tgid0", "tciv0", "tgie0", "tgif0", "tgia1", "tgib1", "tciv1", "tciu1", "tgia2", "tgib2", "tciv2", "tciu2", "tgia3", "tgib3", "tgic3", "tgid3", "tciv3", "tgia4", "tgib4", "tgic4", "tgid4", "tciv4", "tgiu5", "tgiv5", "tgiw5", "tgia6", "tgib6", "tgic6", "tgid6", "tciv6", "tgia7", "tgib7", "tgic7", "tgid7", "tciv7", "tgia8", "tgib8", "tgic8", "tgid8", "tciv8", "tciu8";
            clocks = <0x00000002 0x00000001 0x00000011>;
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000017>;
            #pwm-cells = <0x00000002>;
            status = "okay";
        };
        poe3@10049800 {
            compatible = "renesas,r9a07g043-poe3", "renesas,rz-poe3";
            reg = <0x00000000 0x10049800 0x00000000 0x00000018>;
            interrupts = <0x00000000 0x000000d6 0x00000004 0x00000000 0x000000d7 0x00000004 0x00000000 0x000000d8 0x00000004 0x00000000 0x000000d9 0x00000004>;
            interrupt-names = "oei1", "oei2", "oei3", "oei4";
            clocks = <0x00000002 0x00000001 0x00000012>;
            clock-names = "fck";
            resets = <0x00000002 0x00000018>;
            power-domains = <0x00000002>;
            status = "disabled";
        };
        ssi@10049c00 {
            compatible = "renesas,r9a07g043-ssi", "renesas,rz-ssi";
            reg = <0x00000000 0x10049c00 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000146 0x00000004 0x00000000 0x00000147 0x00000001 0x00000000 0x00000148 0x00000001 0x00000000 0x00000149 0x00000001>;
            interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
            clocks = <0x00000002 0x00000001 0x0000002a 0x00000002 0x00000001 0x0000002b 0x00000005 0x00000006>;
            clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
            resets = <0x00000002 0x00000024>;
            dmas = <0x00000007 0x00002655 0x00000007 0x00002656>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            #sound-dai-cells = <0x00000000>;
            status = "disabled";
        };
        ssi@1004a000 {
            compatible = "renesas,r9a07g043-ssi", "renesas,rz-ssi";
            reg = <0x00000000 0x1004a000 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000014a 0x00000004 0x00000000 0x0000014b 0x00000001 0x00000000 0x0000014c 0x00000001 0x00000000 0x0000014d 0x00000001>;
            interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
            clocks = <0x00000002 0x00000001 0x0000002c 0x00000002 0x00000001 0x0000002d 0x00000005 0x00000006>;
            clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
            resets = <0x00000002 0x00000025>;
            dmas = <0x00000007 0x00002659 0x00000007 0x0000265a>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            #sound-dai-cells = <0x00000000>;
            status = "disabled";
        };
        ssi@1004a400 {
            compatible = "renesas,r9a07g043-ssi", "renesas,rz-ssi";
            reg = <0x00000000 0x1004a400 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000014e 0x00000004 0x00000000 0x0000014f 0x00000001 0x00000000 0x00000150 0x00000001 0x00000000 0x00000151 0x00000001>;
            interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
            clocks = <0x00000002 0x00000001 0x0000002e 0x00000002 0x00000001 0x0000002f 0x00000005 0x00000006>;
            clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
            resets = <0x00000002 0x00000026>;
            dmas = <0x00000007 0x0000265f>;
            dma-names = "rt";
            power-domains = <0x00000002>;
            #sound-dai-cells = <0x00000000>;
            status = "disabled";
        };
        ssi@1004a800 {
            compatible = "renesas,r9a07g043-ssi", "renesas,rz-ssi";
            reg = <0x00000000 0x1004a800 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000152 0x00000004 0x00000000 0x00000153 0x00000001 0x00000000 0x00000154 0x00000001 0x00000000 0x00000155 0x00000001>;
            interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
            clocks = <0x00000002 0x00000001 0x00000030 0x00000002 0x00000001 0x00000031 0x00000005 0x00000006>;
            clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
            resets = <0x00000002 0x00000027>;
            dmas = <0x00000007 0x00002661 0x00000007 0x00002662>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            #sound-dai-cells = <0x00000000>;
            status = "disabled";
        };
        spi@1004ac00 {
            compatible = "renesas,r9a07g043-rspi", "renesas,rspi-rz";
            reg = <0x00000000 0x1004ac00 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000019f 0x00000004 0x00000000 0x0000019d 0x00000004 0x00000000 0x0000019e 0x00000004>;
            interrupt-names = "error", "rx", "tx";
            clocks = <0x00000002 0x00000001 0x00000047>;
            resets = <0x00000002 0x0000003b>;
            dmas = <0x00000007 0x00002e95 0x00000007 0x00002e96>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            num-cs = <0x00000001>;
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            status = "disabled";
        };
        spi@1004b000 {
            compatible = "renesas,r9a07g043-rspi", "renesas,rspi-rz";
            reg = <0x00000000 0x1004b000 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x000001a2 0x00000004 0x00000000 0x000001a0 0x00000004 0x00000000 0x000001a1 0x00000004>;
            interrupt-names = "error", "rx", "tx";
            clocks = <0x00000002 0x00000001 0x00000048>;
            resets = <0x00000002 0x0000003c>;
            dmas = <0x00000007 0x00002e99 0x00000007 0x00002e9a>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            num-cs = <0x00000001>;
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            status = "okay";
            pinctrl-0 = <0x00000008 0x00000009>;
            pinctrl-names = "default";
            spi@0 {
                status = "disabled";
            };
        };
        spi@1004b400 {
            compatible = "renesas,r9a07g043-rspi", "renesas,rspi-rz";
            reg = <0x00000000 0x1004b400 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x000001a5 0x00000004 0x00000000 0x000001a3 0x00000004 0x00000000 0x000001a4 0x00000004>;
            interrupt-names = "error", "rx", "tx";
            clocks = <0x00000002 0x00000001 0x00000049>;
            resets = <0x00000002 0x0000003d>;
            dmas = <0x00000007 0x00002e9d 0x00000007 0x00002e9e>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            num-cs = <0x00000001>;
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            status = "okay";
            pinctrl-0 = <0x0000000a>;
            pinctrl-names = "default";
            spi@0 {
                status = "okay";
                reg = <0x00000000>;
                compatible = "custom,spidev";
                spi-max-frequency = <0x002dc6c0>;
            };
        };
        serial@1004b800 {
            compatible = "renesas,scif-r9a07g043", "renesas,scif-r9a07g044";
            reg = <0x00000000 0x1004b800 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000017c 0x00000004 0x00000000 0x0000017e 0x00000004 0x00000000 0x0000017f 0x00000004 0x00000000 0x0000017d 0x00000004 0x00000000 0x00000180 0x00000004 0x00000000 0x00000180 0x00000004>;
            interrupt-names = "eri", "rxi", "txi", "bri", "dri", "tei";
            clocks = <0x00000002 0x00000001 0x0000003f>;
            clock-names = "fck";
            dmas = <0x00000007 0x00004e79 0x00000007 0x00004e7a>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000033>;
            status = "okay";
            pinctrl-0 = <0x0000000b>;
            pinctrl-names = "default";
        };
        serial@1004bc00 {
            compatible = "renesas,scif-r9a07g043", "renesas,scif-r9a07g044";
            reg = <0x00000000 0x1004bc00 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000181 0x00000004 0x00000000 0x00000183 0x00000004 0x00000000 0x00000184 0x00000004 0x00000000 0x00000182 0x00000004 0x00000000 0x00000185 0x00000004 0x00000000 0x00000185 0x00000004>;
            interrupt-names = "eri", "rxi", "txi", "bri", "dri", "tei";
            clocks = <0x00000002 0x00000001 0x00000040>;
            clock-names = "fck";
            dmas = <0x00000007 0x00004e7d 0x00000007 0x00004e7e>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000034>;
            status = "disabled";
        };
        serial@1004c000 {
            compatible = "renesas,scif-r9a07g043", "renesas,scif-r9a07g044";
            reg = <0x00000000 0x1004c000 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000186 0x00000004 0x00000000 0x00000188 0x00000004 0x00000000 0x00000189 0x00000004 0x00000000 0x00000187 0x00000004 0x00000000 0x0000018a 0x00000004 0x00000000 0x0000018a 0x00000004>;
            interrupt-names = "eri", "rxi", "txi", "bri", "dri", "tei";
            clocks = <0x00000002 0x00000001 0x00000041>;
            clock-names = "fck";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000035>;
            status = "okay";
            pinctrl-0 = <0x0000000c>;
            pinctrl-names = "default";
            uart-has-rtscts;
        };
        serial@1004c400 {
            compatible = "renesas,scif-r9a07g043", "renesas,scif-r9a07g044";
            reg = <0x00000000 0x1004c400 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000018b 0x00000004 0x00000000 0x0000018d 0x00000004 0x00000000 0x0000018e 0x00000004 0x00000000 0x0000018c 0x00000004 0x00000000 0x0000018f 0x00000004 0x00000000 0x0000018f 0x00000004>;
            interrupt-names = "eri", "rxi", "txi", "bri", "dri", "tei";
            clocks = <0x00000002 0x00000001 0x00000042>;
            clock-names = "fck";
            dmas = <0x00000007 0x00004e85 0x00000007 0x00004e86>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000036>;
            status = "disabled";
        };
        serial@1004c800 {
            compatible = "renesas,scif-r9a07g043", "renesas,scif-r9a07g044";
            reg = <0x00000000 0x1004c800 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000190 0x00000004 0x00000000 0x00000192 0x00000004 0x00000000 0x00000193 0x00000004 0x00000000 0x00000191 0x00000004 0x00000000 0x00000194 0x00000004 0x00000000 0x00000194 0x00000004>;
            interrupt-names = "eri", "rxi", "txi", "bri", "dri", "tei";
            clocks = <0x00000002 0x00000001 0x00000043>;
            clock-names = "fck";
            dmas = <0x00000007 0x00004e89 0x00000007 0x00004e8a>;
            dma-names = "tx", "rx";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000037>;
            status = "okay";
            pinctrl-0 = <0x0000000d>;
            pinctrl-names = "default";
        };
        serial@1004d000 {
            compatible = "renesas,r9a07g043-sci", "renesas,sci";
            reg = <0x00000000 0x1004d000 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000195 0x00000004 0x00000000 0x00000196 0x00000001 0x00000000 0x00000197 0x00000001 0x00000000 0x00000198 0x00000004>;
            interrupt-names = "eri", "rxi", "txi", "tei";
            clocks = <0x00000002 0x00000001 0x00000044>;
            clock-names = "fck";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000038>;
            status = "disabled";
        };
        serial@1004d400 {
            compatible = "renesas,r9a07g043-sci", "renesas,sci";
            reg = <0x00000000 0x1004d400 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000199 0x00000004 0x00000000 0x0000019a 0x00000001 0x00000000 0x0000019b 0x00000001 0x00000000 0x0000019c 0x00000004>;
            interrupt-names = "eri", "rxi", "txi", "tei";
            clocks = <0x00000002 0x00000001 0x00000045>;
            clock-names = "fck";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000039>;
            status = "disabled";
        };
        can@10050000 {
            compatible = "renesas,r9a07g043-canfd", "renesas,rzg2l-canfd";
            reg = <0x00000000 0x10050000 0x00000000 0x00008000>;
            interrupts = <0x00000000 0x000001aa 0x00000004 0x00000000 0x000001ab 0x00000004 0x00000000 0x000001a6 0x00000004 0x00000000 0x000001a8 0x00000004 0x00000000 0x000001ac 0x00000004 0x00000000 0x000001a7 0x00000004 0x00000000 0x000001a9 0x00000004 0x00000000 0x000001ad 0x00000004>;
            interrupt-names = "g_err", "g_recc", "ch0_err", "ch0_rec", "ch0_trx", "ch1_err", "ch1_rec", "ch1_trx";
            clocks = <0x00000002 0x00000001 0x0000004a 0x00000002 0x00000000 0x00000012 0x0000000e>;
            clock-names = "fck", "canfd", "can_clk";
            assigned-clocks = <0x00000002 0x00000000 0x00000012>;
            assigned-clock-rates = <0x02faf080>;
            resets = <0x00000002 0x0000003e 0x00000002 0x0000003f>;
            reset-names = "rstp_n", "rstc_n";
            power-domains = <0x00000002>;
            status = "disabled";
            channel0 {
                status = "disabled";
            };
            channel1 {
                status = "disabled";
            };
        };
        i2c@10058000 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "renesas,riic-r9a07g043", "renesas,riic-rz";
            reg = <0x00000000 0x10058000 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000015e 0x00000004 0x00000000 0x0000015c 0x00000001 0x00000000 0x0000015d 0x00000001 0x00000000 0x00000160 0x00000004 0x00000000 0x00000161 0x00000004 0x00000000 0x0000015f 0x00000004 0x00000000 0x00000162 0x00000004 0x00000000 0x00000163 0x00000004>;
            interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali", "tmoi";
            clocks = <0x00000002 0x00000001 0x0000003b>;
            clock-frequency = <0x000186a0>;
            resets = <0x00000002 0x0000002f>;
            power-domains = <0x00000002>;
            status = "okay";
            pinctrl-0 = <0x0000000f>;
            pinctrl-names = "default";
            versa3@68 {
                compatible = "renesas,5p35023";
                reg = <0x00000068>;
                #clock-cells = <0x00000001>;
                clocks = <0x00000010>;
                clock-names = "x1";
                assigned-clocks = <0x00000011 0x00000000 0x00000011 0x00000001 0x00000011 0x00000002 0x00000011 0x00000003 0x00000011 0x00000004 0x00000011 0x00000005>;
                assigned-clock-rates = <0x00bb8000 0x017d7840 0x00b71b00 0x00ac4400 0x00ac4400 0x016e3600>;
                clock-divider-read-only = <0x00000001 0x00000001 0x00000001 0x00000001 0x00000001>;
                clock-flags = <0x00000880 0x00000880 0x00000880 0x00000804 0x00000880 0x00000800>;
                phandle = <0x00000011>;
            };
            da9062@58 {
                compatible = "dlg,da9062";
                reg = <0x00000058>;
                interrupt-parent = <0x00000012>;
                interrupts = <0x00000071 0x00000008>;
                interrupt-controller;
                status = "okay";
                rtc {
                    compatible = "dlg,da9062-rtc";
                };
                watchdog {
                    compatible = "dlg,da9062-watchdog";
                };
                thermal {
                    compatible = "dlg,da9062-thermal";
                    polling-delay-passive = <0x00000bb8>;
                };
            };
        };
        i2c@10058400 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "renesas,riic-r9a07g043", "renesas,riic-rz";
            reg = <0x00000000 0x10058400 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000166 0x00000004 0x00000000 0x00000164 0x00000001 0x00000000 0x00000165 0x00000001 0x00000000 0x00000168 0x00000004 0x00000000 0x00000169 0x00000004 0x00000000 0x00000167 0x00000004 0x00000000 0x0000016a 0x00000004 0x00000000 0x0000016b 0x00000004>;
            interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali", "tmoi";
            clocks = <0x00000002 0x00000001 0x0000003c>;
            clock-frequency = <0x000186a0>;
            resets = <0x00000002 0x00000030>;
            power-domains = <0x00000002>;
            status = "okay";
            pinctrl-0 = <0x00000013>;
            pinctrl-names = "default";
        };
        i2c@10058800 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "renesas,riic-r9a07g043", "renesas,riic-rz";
            reg = <0x00000000 0x10058800 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000016e 0x00000004 0x00000000 0x0000016c 0x00000001 0x00000000 0x0000016d 0x00000001 0x00000000 0x00000170 0x00000004 0x00000000 0x00000171 0x00000004 0x00000000 0x0000016f 0x00000004 0x00000000 0x00000172 0x00000004 0x00000000 0x00000173 0x00000004>;
            interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali", "tmoi";
            clocks = <0x00000002 0x00000001 0x0000003d>;
            clock-frequency = <0x000186a0>;
            resets = <0x00000002 0x00000031>;
            power-domains = <0x00000002>;
            status = "disabled";
        };
        i2c@10058c00 {
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            compatible = "renesas,riic-r9a07g043", "renesas,riic-rz";
            reg = <0x00000000 0x10058c00 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000176 0x00000004 0x00000000 0x00000174 0x00000001 0x00000000 0x00000175 0x00000001 0x00000000 0x00000178 0x00000004 0x00000000 0x00000179 0x00000004 0x00000000 0x00000177 0x00000004 0x00000000 0x0000017a 0x00000004 0x00000000 0x0000017b 0x00000004>;
            interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali", "tmoi";
            clocks = <0x00000002 0x00000001 0x0000003e>;
            clock-frequency = <0x000186a0>;
            resets = <0x00000002 0x00000032>;
            power-domains = <0x00000002>;
            status = "disabled";
        };
        adc@10059000 {
            compatible = "renesas,r9a07g043-adc", "renesas,rzg2l-adc";
            reg = <0x00000000 0x10059000 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000015b 0x00000001>;
            clocks = <0x00000002 0x00000001 0x0000004c 0x00000002 0x00000001 0x0000004d>;
            clock-names = "adclk", "pclk";
            resets = <0x00000002 0x00000043 0x00000002 0x00000044>;
            reset-names = "presetn", "adrst-n";
            power-domains = <0x00000002>;
            status = "disabled";
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            channel@0 {
                reg = <0x00000000>;
            };
            channel@1 {
                reg = <0x00000001>;
            };
        };
        thermal@10059400 {
            compatible = "renesas,r9a07g043-tsu", "renesas,rzg2l-tsu";
            reg = <0x00000000 0x10059400 0x00000000 0x00000400>;
            clocks = <0x00000002 0x00000001 0x0000004e>;
            resets = <0x00000002 0x00000045>;
            power-domains = <0x00000002>;
            #thermal-sensor-cells = <0x00000001>;
            phandle = <0x00000029>;
        };
        spi@10060000 {
            compatible = "renesas,r9a07g043-rpc-if", "renesas,rzg2l-rpc-if";
            reg = <0x00000000 0x10060000 0x00000000 0x00010000 0x00000000 0x20000000 0x00000000 0x10000000 0x00000000 0x10070000 0x00000000 0x00010000>;
            reg-names = "regs", "dirmap", "wbuf";
            clocks = <0x00000002 0x00000001 0x00000017 0x00000002 0x00000001 0x00000018>;
            resets = <0x00000002 0x0000001b>;
            power-domains = <0x00000002>;
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            status = "disabled";
        };
        clock-controller@11010000 {
            compatible = "renesas,r9a07g043-cpg";
            reg = <0x00000000 0x11010000 0x00000000 0x00010000>;
            clocks = <0x00000014>;
            clock-names = "extal";
            #clock-cells = <0x00000002>;
            #reset-cells = <0x00000001>;
            #power-domain-cells = <0x00000000>;
            phandle = <0x00000002>;
        };
        system-controller@11020000 {
            compatible = "renesas,r9a07g043-sysc";
            reg = <0x00000000 0x11020000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x0000002a 0x00000004 0x00000000 0x0000002b 0x00000004 0x00000000 0x0000002c 0x00000004 0x00000000 0x0000002d 0x00000004>;
            interrupt-names = "lpm_int", "ca55stbydone_int", "cm33stbyr_int", "ca55_deny";
            status = "disabled";
        };
        pinctrl@11030000 {
            compatible = "renesas,r9a07g043-pinctrl";
            reg = <0x00000000 0x11030000 0x00000000 0x00010000 0x00000000 0x110a0020 0x00000000 0x00000030>;
            gpio-controller;
            #gpio-cells = <0x00000002>;
            gpio-ranges = <0x00000012 0x00000000 0x00000000 0x00000098>;
            clocks = <0x00000002 0x00000001 0x0000004b>;
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000040 0x00000002 0x00000041 0x00000002 0x00000042>;
            interrupt-controller;
            #interrupt-cells = <0x00000002>;
            interrupts = <0x00000000 0x000001bc 0x00000004 0x00000000 0x000001bd 0x00000004 0x00000000 0x000001be 0x00000004 0x00000000 0x000001bf 0x00000004 0x00000000 0x000001c0 0x00000004 0x00000000 0x000001c1 0x00000004 0x00000000 0x000001c2 0x00000004 0x00000000 0x000001c3 0x00000004 0x00000000 0x000001c4 0x00000004 0x00000000 0x000001c5 0x00000004 0x00000000 0x000001c6 0x00000004 0x00000000 0x000001c7 0x00000004 0x00000000 0x000001c8 0x00000004 0x00000000 0x000001c9 0x00000004 0x00000000 0x000001ca 0x00000004 0x00000000 0x000001cb 0x00000004 0x00000000 0x000001cc 0x00000004 0x00000000 0x000001cd 0x00000004 0x00000000 0x000001ce 0x00000004 0x00000000 0x000001cf 0x00000004 0x00000000 0x000001d0 0x00000004 0x00000000 0x000001d1 0x00000004 0x00000000 0x000001d2 0x00000004 0x00000000 0x000001d3 0x00000004 0x00000000 0x000001d4 0x00000004 0x00000000 0x000001d5 0x00000004 0x00000000 0x000001d6 0x00000004 0x00000000 0x000001d7 0x00000004 0x00000000 0x000001d8 0x00000004 0x00000000 0x000001d9 0x00000004 0x00000000 0x000001da 0x00000004 0x00000000 0x000001db 0x00000004>;
            pinctrl-0 = <0x00000015 0x00000016>;
            pinctrl-names = "default";
            phandle = <0x00000012>;
            adc {
                pinmux = <0x00040029>;
            };
            wakeupazw {
                pinmux = <0x00000049>;
            };
            eth0 {
                pinmux = <0x00010025 0x00010023 0x00010024 0x00010008 0x00010009 0x0001000a 0x0001000b 0x0001000c 0x00010010 0x00010018 0x00010019 0x0001001a 0x0001001b 0x00010020 0x00010021>;
                phandle = <0x0000001c>;
            };
            scif0 {
                pinmux = <0x00060034 0x00060033>;
                phandle = <0x0000000b>;
            };
            scif1 {
                pinmux = <0x00030041 0x00030040 0x00030042 0x00030043>;
            };
            i2c0 {
                pins = "RIIC0_SDA", "RIIC0_SCL";
                input-enable;
                phandle = <0x0000000f>;
            };
            i2c1 {
                pins = "RIIC1_SDA", "RIIC1_SCL";
                input-enable;
                phandle = <0x00000013>;
            };
            sd0 {
                phandle = <0x00000017>;
                sd0_data {
                    pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3", "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7";
                    power-source = <0x00000708>;
                };
                sd0_ctrl {
                    pins = "SD0_CLK", "SD0_CMD", "SD0_RST#";
                    power-source = <0x00000708>;
                };
            };
            sd1 {
                phandle = <0x0000001a>;
                sd1_data {
                    pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
                    power-source = <0x00000708>;
                };
                sd1_ctrl {
                    pins = "SD1_CLK", "SD1_CMD";
                    power-source = <0x00000708>;
                };
            };
            sd1_uhs {
                phandle = <0x0000001b>;
                sd1_data_uhs {
                    pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
                    power-source = <0x00000708>;
                };
                sd1_ctrl_uhs {
                    pins = "SD1_CLK", "SD1_CMD";
                    power-source = <0x00000708>;
                };
            };
            uart_esp32 {
                pinmux = <0x00070095 0x00070094>;
                phandle = <0x0000000d>;
            };
            uart_efr32 {
                pinmux = <0x00020028 0x00020029 0x0002002b 0x0002002c>;
                phandle = <0x0000000c>;
            };
            gpio_efr32 {
                pinmux = <0x00000060 0x00000061>;
                output-high;
                drive-push-pull;
                phandle = <0x00000015>;
            };
            spi_led {
                pinmux = <0x00020030 0x00020031>;
                phandle = <0x0000000a>;
            };
            spi_esp32c3 {
                pinmux = <0x00010088 0x00010089 0x0001008a>;
                phandle = <0x00000008>;
            };
            spics_esp32c3 {
                pinmux = <0x0001008b>;
                bias-pull-up;
                phandle = <0x00000009>;
            };
            gpio_esp32c3 {
                pinmux = <0x00000090 0x00000091 0x00000093>;
                phandle = <0x00000016>;
            };
            gpio_esp32ce {
                gpio-hog;
                gpios = <0x00000092 0x00000011>;
                input;
                line-name = "ESP32_CE";
            };
        };
        dma-controller@11820000 {
            compatible = "renesas,r9a07g043-dmac", "renesas,rz-dmac";
            reg = <0x00000000 0x11820000 0x00000000 0x00010000 0x00000000 0x11830000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x0000008d 0x00000001 0x00000000 0x0000007d 0x00000001 0x00000000 0x0000007e 0x00000001 0x00000000 0x0000007f 0x00000001 0x00000000 0x00000080 0x00000001 0x00000000 0x00000081 0x00000001 0x00000000 0x00000082 0x00000001 0x00000000 0x00000083 0x00000001 0x00000000 0x00000084 0x00000001 0x00000000 0x00000085 0x00000001 0x00000000 0x00000086 0x00000001 0x00000000 0x00000087 0x00000001 0x00000000 0x00000088 0x00000001 0x00000000 0x00000089 0x00000001 0x00000000 0x0000008a 0x00000001 0x00000000 0x0000008b 0x00000001 0x00000000 0x0000008c 0x00000001>;
            interrupt-names = "error", "ch0", "ch1", "ch2", "ch3", "ch4", "ch5", "ch6", "ch7", "ch8", "ch9", "ch10", "ch11", "ch12", "ch13", "ch14", "ch15";
            clocks = <0x00000002 0x00000001 0x0000000c 0x00000002 0x00000001 0x0000000d>;
            clock-names = "main", "register";
            power-domains = <0x00000002>;
            resets = <0x00000002 0x00000011 0x00000002 0x00000012>;
            reset-names = "arst", "rst_async";
            #dma-cells = <0x00000001>;
            dma-channels = <0x00000010>;
            phandle = <0x00000007>;
        };
        interrupt-controller@11900000 {
            compatible = "arm,gic-v3";
            #interrupt-cells = <0x00000003>;
            #address-cells = <0x00000000>;
            interrupt-controller;
            reg = <0x00000000 0x11900000 0x00000000 0x00040000 0x00000000 0x11940000 0x00000000 0x00060000>;
            interrupts = <0x00000001 0x00000009 0x00000008>;
            phandle = <0x00000004>;
        };
        intc_ex@0x110A0000 {
            compatible = "renesas,rzg2ul-irqc";
            #interrupt-cells = <0x00000002>;
            interrupt-controller;
            reg = <0x00000000 0x110a0000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000001 0x00000004 0x00000000 0x00000002 0x00000004 0x00000000 0x00000003 0x00000004 0x00000000 0x00000004 0x00000004 0x00000000 0x00000005 0x00000004 0x00000000 0x00000006 0x00000004 0x00000000 0x00000007 0x00000004 0x00000000 0x00000008 0x00000004 0x00000000 0x00000000 0x00000004>;
            interrupt-names = "irq0", "irq1", "irq2", "irq3", "irq4", "irq5", "irq6", "irq7", "nmi";
            clocks = <0x00000002 0x00000001 0x00000008>;
            resets = <0x00000002 0x0000000f>;
            power-domains = <0x00000002>;
            status = "disabled";
        };
        mmc@11c00000 {
            compatible = "renesas,sdhi-r9a07g043", "renesas,rcar-gen3-sdhi";
            reg = <0x00000000 0x11c00000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000068 0x00000004 0x00000000 0x00000069 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000019 0x00000002 0x00000001 0x0000001b 0x00000002 0x00000001 0x0000001a 0x00000002 0x00000001 0x0000001c>;
            clock-names = "core", "clkh", "cd", "aclk";
            resets = <0x00000002 0x0000001c>;
            power-domains = <0x00000002>;
            status = "okay";
            pinctrl-0 = <0x00000017>;
            pinctrl-1 = <0x00000017>;
            pinctrl-names = "default", "state_uhs";
            vmmc-supply = <0x00000018>;
            vqmmc-supply = <0x00000019>;
            bus-width = <0x00000008>;
            mmc-hs200-1_8v;
            non-removable;
            fixed-emmc-driver-type = <0x00000001>;
        };
        mmc@11c10000 {
            compatible = "renesas,sdhi-r9a07g043", "renesas,rcar-gen3-sdhi";
            reg = <0x00000000 0x11c10000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x0000006a 0x00000004 0x00000000 0x0000006b 0x00000004>;
            clocks = <0x00000002 0x00000001 0x0000001d 0x00000002 0x00000001 0x0000001f 0x00000002 0x00000001 0x0000001e 0x00000002 0x00000001 0x00000020>;
            clock-names = "core", "clkh", "cd", "aclk";
            resets = <0x00000002 0x0000001d>;
            power-domains = <0x00000002>;
            status = "disabled";
            pinctrl-names = "default", "state_uhs";
            pinctrl-0 = <0x0000001a>;
            pinctrl-1 = <0x0000001b>;
            bus-width = <0x00000004>;
            keep-power-in-suspend;
            non-removable;
            wakeup-source;
            vmmc-supply = <0x00000018>;
            vqmmc-supply = <0x00000019>;
        };
        ethernet@11c20000 {
            compatible = "renesas,r9a07g043-gbeth", "renesas,rzg2l-gbeth";
            reg = <0x00000000 0x11c20000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000054 0x00000004 0x00000000 0x00000055 0x00000004 0x00000000 0x00000056 0x00000004>;
            interrupt-names = "mux", "fil", "arp_ns";
            phy-mode = "rgmii";
            clocks = <0x00000002 0x00000001 0x00000037 0x00000002 0x00000001 0x00000038 0x00000002 0x00000000 0x0000000a>;
            clock-names = "axi", "chi", "refclk";
            resets = <0x00000002 0x0000002d>;
            power-domains = <0x00000002>;
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            status = "disabled";
            pinctrl-0 = <0x0000001c>;
            pinctrl-names = "default";
            phy-handle = <0x0000001d>;
            ethernet-phy@7 {
                reg = <0x00000007>;
                rxc-skew-psec = <0x00000960>;
                txc-skew-psec = <0x00000960>;
                rxdv-skew-psec = <0x00000000>;
                txdv-skew-psec = <0x00000000>;
                rxd0-skew-psec = <0x00000000>;
                rxd1-skew-psec = <0x00000000>;
                rxd2-skew-psec = <0x00000000>;
                rxd3-skew-psec = <0x00000000>;
                txd0-skew-psec = <0x00000000>;
                txd1-skew-psec = <0x00000000>;
                txd2-skew-psec = <0x00000000>;
                txd3-skew-psec = <0x00000000>;
                phandle = <0x0000001d>;
            };
        };
        ethernet@11c30000 {
            compatible = "renesas,r9a07g043-gbeth", "renesas,rzg2l-gbeth";
            reg = <0x00000000 0x11c30000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000057 0x00000004 0x00000000 0x00000058 0x00000004 0x00000000 0x00000059 0x00000004>;
            interrupt-names = "mux", "fil", "arp_ns";
            phy-mode = "rgmii";
            clocks = <0x00000002 0x00000001 0x00000039 0x00000002 0x00000001 0x0000003a 0x00000002 0x00000000 0x0000000a>;
            clock-names = "axi", "chi", "refclk";
            resets = <0x00000002 0x0000002e>;
            power-domains = <0x00000002>;
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            status = "disabled";
        };
        usbphy-ctrl@11c40000 {
            compatible = "renesas,r9a07g043-usbphy-ctrl", "renesas,rzg2l-usbphy-ctrl";
            reg = <0x00000000 0x11c40000 0x00000000 0x00010000>;
            clocks = <0x00000002 0x00000001 0x00000036>;
            resets = <0x00000002 0x0000002c>;
            power-domains = <0x00000002>;
            #reset-cells = <0x00000001>;
            status = "okay";
            phandle = <0x0000001e>;
        };
        usb@11c50000 {
            compatible = "generic-ohci";
            reg = <0x00000000 0x11c50000 0x00000000 0x00000100>;
            interrupts = <0x00000000 0x0000005b 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000036 0x00000002 0x00000001 0x00000033>;
            resets = <0x0000001e 0x00000000 0x00000002 0x00000029>;
            phys = <0x0000001f 0x00000001>;
            phy-names = "usb";
            power-domains = <0x00000002>;
            status = "okay";
            dr_mode = "otg";
            memory-region = <0x00000020>;
            phandle = <0x00000022>;
        };
        usb@11c70000 {
            compatible = "generic-ohci";
            reg = <0x00000000 0x11c70000 0x00000000 0x00000100>;
            interrupts = <0x00000000 0x00000060 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000036 0x00000002 0x00000001 0x00000034>;
            resets = <0x0000001e 0x00000001 0x00000002 0x0000002a>;
            phys = <0x00000021 0x00000001>;
            phy-names = "usb";
            power-domains = <0x00000002>;
            status = "okay";
            memory-region = <0x00000020>;
            phandle = <0x00000023>;
        };
        usb@11c50100 {
            compatible = "generic-ehci";
            reg = <0x00000000 0x11c50100 0x00000000 0x00000100>;
            interrupts = <0x00000000 0x0000005c 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000036 0x00000002 0x00000001 0x00000033>;
            resets = <0x0000001e 0x00000000 0x00000002 0x00000029>;
            phys = <0x0000001f 0x00000002>;
            phy-names = "usb";
            companion = <0x00000022>;
            power-domains = <0x00000002>;
            status = "okay";
            dr_mode = "otg";
            memory-region = <0x00000020>;
        };
        usb@11c70100 {
            compatible = "generic-ehci";
            reg = <0x00000000 0x11c70100 0x00000000 0x00000100>;
            interrupts = <0x00000000 0x00000061 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000036 0x00000002 0x00000001 0x00000034>;
            resets = <0x0000001e 0x00000001 0x00000002 0x0000002a>;
            phys = <0x00000021 0x00000002>;
            phy-names = "usb";
            companion = <0x00000023>;
            power-domains = <0x00000002>;
            status = "okay";
            memory-region = <0x00000020>;
        };
        usb-phy@11c50200 {
            compatible = "renesas,usb2-phy-r9a07g043", "renesas,rzg2l-usb2-phy";
            reg = <0x00000000 0x11c50200 0x00000000 0x00000700>;
            interrupts = <0x00000000 0x0000005e 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000036 0x00000002 0x00000001 0x00000033>;
            resets = <0x0000001e 0x00000000>;
            #phy-cells = <0x00000001>;
            power-domains = <0x00000002>;
            status = "okay";
            dr_mode = "otg";
            vbus-supply = <0x00000024>;
            phandle = <0x0000001f>;
        };
        usb-phy@11c70200 {
            compatible = "renesas,usb2-phy-r9a07g043", "renesas,rzg2l-usb2-phy";
            reg = <0x00000000 0x11c70200 0x00000000 0x00000700>;
            interrupts = <0x00000000 0x00000063 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000036 0x00000002 0x00000001 0x00000034>;
            resets = <0x0000001e 0x00000001>;
            #phy-cells = <0x00000001>;
            power-domains = <0x00000002>;
            status = "disabled";
            phandle = <0x00000021>;
        };
        usb@11c60000 {
            compatible = "renesas,usbhs-r9a07g043", "renesas,rzg2l-usbhs";
            reg = <0x00000000 0x11c60000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000064 0x00000001 0x00000000 0x00000065 0x00000004 0x00000000 0x00000066 0x00000004 0x00000000 0x00000067 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000036 0x00000002 0x00000001 0x00000035>;
            resets = <0x0000001e 0x00000000 0x00000002 0x0000002b>;
            renesas,buswait = <0x00000007>;
            phys = <0x0000001f 0x00000003>;
            phy-names = "usb";
            power-domains = <0x00000002>;
            status = "okay";
            dr_mode = "otg";
        };
        watchdog@12800800 {
            compatible = "renesas,r9a07g043-wdt", "renesas,rzg2l-wdt";
            reg = <0x00000000 0x12800800 0x00000000 0x00000400>;
            clocks = <0x00000002 0x00000001 0x00000013 0x00000002 0x00000001 0x00000014>;
            clock-names = "pclk", "oscclk";
            interrupts = <0x00000000 0x00000031 0x00000004 0x00000000 0x00000032 0x00000004>;
            interrupt-names = "wdt", "perrout";
            resets = <0x00000002 0x00000019>;
            power-domains = <0x00000002>;
            channel,id = <0x00000000>;
            status = "okay";
            timeout-sec = <0x0000003c>;
        };
        watchdog@12800400 {
            compatible = "renesas,r9a07g043-wdt", "renesas,rzg2l-wdt";
            reg = <0x00000000 0x12800400 0x00000000 0x00000400>;
            clocks = <0x00000002 0x00000001 0x00000015 0x00000002 0x00000001 0x00000016>;
            clock-names = "pclk", "oscclk";
            interrupts = <0x00000000 0x00000035 0x00000004 0x00000000 0x00000036 0x00000004>;
            interrupt-names = "wdt", "perrout";
            resets = <0x00000002 0x0000001a>;
            power-domains = <0x00000002>;
            channel,id = <0x00000002>;
            status = "disabled";
        };
        timer@12801400 {
            compatible = "renesas,r9a07g043-ostm", "renesas,ostm";
            reg = <0x00000000 0x12801400 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x0000002f 0x00000001>;
            clocks = <0x00000002 0x00000001 0x0000000f>;
            resets = <0x00000002 0x00000015>;
            power-domains = <0x00000002>;
            status = "okay";
        };
        timer@12801800 {
            compatible = "renesas,r9a07g043-ostm", "renesas,ostm";
            reg = <0x00000000 0x12801800 0x00000000 0x00000400>;
            interrupts = <0x00000000 0x00000030 0x00000001>;
            clocks = <0x00000002 0x00000001 0x00000010>;
            resets = <0x00000002 0x00000016>;
            power-domains = <0x00000002>;
            status = "disabled";
        };
        vsp@10870000 {
            compatible = "renesas,vsp2";
            reg = <0x00000000 0x10870000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000095 0x00000004>;
            power-domains = <0x00000002>;
            renesas,fcp = <0x00000025>;
            phandle = <0x00000026>;
        };
        fcp@10880000 {
            compatible = "renesas,fcpv";
            reg = <0x00000000 0x10880000 0x00000000 0x00010000>;
            power-domains = <0x00000002>;
            phandle = <0x00000025>;
        };
        isum@10840000 {
            compatible = "renesas,isum";
            reg = <0x00000000 0x10840000 0x00000000 0x000001f4>;
            interrupts = <0x00000000 0x0000009d 0x00000004 0x00000000 0x0000009e 0x00000004 0x00000000 0x0000009f 0x00000004 0x00000000 0x000000a0 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000021 0x00000002 0x00000001 0x00000022>;
            clock-names = "isu_aclk", "isu_pclk";
            resets = <0x00000002 0x0000001e 0x00000002 0x0000001f>;
            reset-names = "aresetn", "presetn";
            renesas,#ch = <0x00000000>;
            renesas,#rpf = <0x00000001>;
            renesas,#wpf = <0x00000001>;
            renesas,has-rs;
            power-domains = <0x00000002>;
        };
        display@10890000 {
            compatible = "renesas,du-rzg2ul";
            reg = <0x00000000 0x10890000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000098 0x00000004>;
            clocks = <0x00000002 0x00000001 0x00000027 0x00000002 0x00000001 0x00000028 0x00000002 0x00000001 0x00000029>;
            clock-names = "aclk", "pclk", "dclk";
            resets = <0x00000002 0x00000023>;
            vsps = <0x00000026 0x00000000>;
            power-domains = <0x00000002>;
            status = "disabled";
            ports {
                #address-cells = <0x00000001>;
                #size-cells = <0x00000000>;
                port@0 {
                    reg = <0x00000000>;
                    endpoint {
                    };
                };
            };
        };
        dsi@10860000 {
        };
        video@10830000 {
            compatible = "renesas,cru-r9a07g043";
            reg = <0x00000000 0x10830000 0x00000000 0x00000400>;
            clocks = <0x00000002 0x00000001 0x00000024 0x00000002 0x00000001 0x00000025 0x00000002 0x00000001 0x00000026>;
            clock-names = "vclk", "pclk", "aclk";
            interrupts = <0x00000000 0x000000a7 0x00000004>;
            resets = <0x00000002 0x00000021 0x00000002 0x00000022>;
            reset-names = "presetn", "aresetn";
            power-domains = <0x00000002>;
            status = "disabled";
            ports {
                #address-cells = <0x00000001>;
                #size-cells = <0x00000000>;
                port@1 {
                    reg = <0x00000001>;
                    endpoint {
                        remote-endpoint = <0x00000027>;
                        phandle = <0x00000028>;
                    };
                };
            };
        };
        csi2@10830400 {
            compatible = "renesas,r9a07g043-csi2";
            reg = <0x00000000 0x10830400 0x00000000 0x00000c00>;
            interrupts = <0x00000000 0x000000a6 0x00000004>;
            status = "disabled";
            clocks = <0x00000002 0x00000001 0x00000024 0x00000002 0x00000001 0x00000023>;
            clock-names = "vclk", "sysclk";
            resets = <0x00000002 0x00000020>;
            reset-names = "cmn_rstb";
            ports {
                #address-cells = <0x00000001>;
                #size-cells = <0x00000000>;
                port@1 {
                    reg = <0x00000001>;
                    endpoint {
                        remote-endpoint = <0x00000028>;
                        phandle = <0x00000027>;
                    };
                };
            };
        };
        edac@11410000 {
            compatible = "renesas,r9a07g043-edac";
            reg = <0x00000000 0x11410000 0x00000000 0x00010000>;
            interrupts = <0x00000000 0x00000028 0x00000004>;
            interrupt-names = "ecc_irq";
        };
    };
    thermal-zones {
        cpu-thermal {
            polling-delay-passive = <0x000000fa>;
            polling-delay = <0x000003e8>;
            thermal-sensors = <0x00000029 0x00000000>;
            sustainable-power = <0x000002cd>;
            cooling-maps {
                map0 {
                    trip = <0x0000002a>;
                    cooling-device = <0x0000002b 0x00000000 0x00000002>;
                    contribution = <0x00000400>;
                };
            };
            trips {
                sensor-crit {
                    temperature = <0x0001e848>;
                    hysteresis = <0x000003e8>;
                    type = "critical";
                };
                trip-point {
                    temperature = <0x000186a0>;
                    hysteresis = <0x000003e8>;
                    type = "passive";
                    phandle = <0x0000002a>;
                };
            };
        };
    };
    timer {
        compatible = "arm,armv8-timer";
        interrupts-extended = <0x00000004 0x00000001 0x0000000d 0x00000108 0x00000004 0x00000001 0x0000000e 0x00000108 0x00000004 0x00000001 0x0000000b 0x00000108 0x00000004 0x00000001 0x0000000a 0x00000108>;
    };
    aliases {
        i2c0 = "/soc/i2c@10058000";
        i2c1 = "/soc/i2c@10058400";
        serial0 = "/soc/serial@1004b800";
        serial1 = "/soc/serial@1004bc00";
        ethernet0 = "/soc/ethernet@11c20000";
    };
    chosen {
        bootargs = "ignore_loglevel";
        stdout-path = "serial0:115200n8";
    };
    regulator0 {
        compatible = "regulator-fixed";
        regulator-name = "fixed-1.8V";
        regulator-min-microvolt = <0x001b7740>;
        regulator-max-microvolt = <0x001b7740>;
        regulator-boot-on;
        regulator-always-on;
        phandle = <0x00000019>;
    };
    regulator1 {
        compatible = "regulator-fixed";
        regulator-name = "fixed-3.3V";
        regulator-min-microvolt = <0x00325aa0>;
        regulator-max-microvolt = <0x00325aa0>;
        regulator-boot-on;
        regulator-always-on;
        phandle = <0x00000018>;
    };
    regulator-vbus0-usb2 {
        compatible = "regulator-fixed";
        regulator-name = "USB20_VBUS0";
        regulator-min-microvolt = <0x004c4b40>;
        regulator-max-microvolt = <0x004c4b40>;
        phandle = <0x00000024>;
    };
    regulator-vccq-sdhi1 {
        compatible = "regulator-gpio";
        regulator-name = "SDHI1 VccQ";
        regulator-min-microvolt = <0x001b7740>;
        regulator-max-microvolt = <0x00325aa0>;
        gpios = <0x00000012 0x00000032 0x00000000>;
        gpios-states = <0x00000001>;
        states = <0x00325aa0 0x00000001 0x001b7740 0x00000000>;
    };
    x1-clock {
        compatible = "fixed-clock";
        #clock-cells = <0x00000000>;
        clock-frequency = <0x016e3600>;
        phandle = <0x00000010>;
    };
    clk_ext_camera {
        compatible = "fixed-clock";
        #clock-cells = <0x00000000>;
        clock-frequency = <0x016e3600>;
    };
    1p8v {
        compatible = "regulator-fixed";
        regulator-name = "camera_vdddo";
        regulator-min-microvolt = <0x001b7740>;
        regulator-max-microvolt = <0x001b7740>;
        regulator-always-on;
    };
    2p8v {
        compatible = "regulator-fixed";
        regulator-name = "camera_vdda";
        regulator-min-microvolt = <0x002ab980>;
        regulator-max-microvolt = <0x002ab980>;
        regulator-always-on;
    };
    1p5v {
        compatible = "regulator-fixed";
        regulator-name = "camera_vddd";
        regulator-min-microvolt = <0x0016e360>;
        regulator-max-microvolt = <0x0016e360>;
        regulator-always-on;
    };
    vring-ctl0@43000000 {
        compatible = "vring_uio";
        reg = <0x00000000 0x43000000 0x00000000 0x00100000>;
        no-map;
    };
    vring-ctl1@43100000 {
        compatible = "vring_uio";
        reg = <0x00000000 0x43100000 0x00000000 0x00100000>;
        no-map;
    };
    vring-shm0@43200000 {
        compatible = "shm_uio";
        reg = <0x00000000 0x43200000 0x00000000 0x00300000>;
        no-map;
    };
    vring-shm1@43500000 {
        compatible = "shm_uio";
        reg = <0x00000000 0x43500000 0x00000000 0x00300000>;
        no-map;
    };
    rsctbl@42f00000 {
        compatible = "shm_uio";
        reg = <0x00000000 0x42f00000 0x00000000 0x00001000>;
        no-map;
    };
    mhu-shm@42f01000 {
        compatible = "shm_uio";
        reg = <0x00000000 0x42f01000 0x00000000 0x00001000>;
        no-map;
    };
    mbox-uio@10400000 {
        compatible = "mbox_uio";
        reg = <0x00000000 0x10400000 0x00000000 0x00001000>;
        interrupt-parent = <0x00000004>;
        interrupts = <0x00000000 0x0000004b 0x00000004>;
        status = "okay";
    };
    memory@48000000 {
        device_type = "memory";
        reg = <0x00000000 0x48000000 0x00000000 0x18000000>;
    };
    reserved-memory {
        #address-cells = <0x00000002>;
        #size-cells = <0x00000002>;
        ranges;
        linux,cma@5f400000 {
            compatible = "shared-dma-pool";
            linux,cma-default;
            reusable;
            reg = <0x00000000 0x5f400000 0x00000000 0x00800000>;
            phandle = <0x00000020>;
        };
    };
    board_info {
        board = "anonymized";
        board_rev = "3.0";
        board_pn = "CT03000200";
        board_bo_hw_type = "anonymized";
        board_desc = "anonymized";
        wifi_ifname = "wlan0";
        preferred_ifname = "wlan0";
        efr32_port = "/dev/ttySC1";
        esp32_port = "/dev/ttySC2";
        led_port = "/dev/spidev1.0";
    };
};

At this point we don't know if the problem is related to Linux/Kernel/DTS configuration or esp_hosted_ng

@mantriyogesh
Copy link
Collaborator

@kapilkedawat ++

@kapilkedawat
Copy link
Contributor

@caipiblack could you please check if there are any spi driver update from platfrom vendor once?

@caipiblack
Copy link
Author

caipiblack commented Nov 20, 2024

I am using the last update from renesas: BSP-3.0.6-update3 (https://github.com/renesas-rz/meta-renesas/tree/BSP-3.0.6-update3)

At this point I really don't know where to check for this issue.

Here is an extract of my DTS:

/dts-v1/;
#include "r9a07g043.dtsi"

&scif4 {
	pinctrl-0 = <&uart_esp32_pins>;
	pinctrl-names = "default";
	status = "okay";
};

&spi1 {
	pinctrl-0 = <&spi_esp32c3_pins &spics_esp32c3_pins>;
	pinctrl-names = "default";
	status = "okay";
	
	spidev1: spi@0 {
		status = "disabled";
		/* As described in the esp_hosted_ng porting guide, spidev should be disabled */
	};
};

&pinctrl {
	pinctrl-names = "default";
		
	uart_esp32_pins: uart_esp32 {
		pinmux = <RZG2L_PORT_PINMUX(18, 5, 7)>, /* SCIF4_TXD - ESP32_U0RXD */
		         <RZG2L_PORT_PINMUX(18, 4, 7)>; /* SCIF4_RXD - ESP32_U0TXD */
	};

	spi_esp32c3_pins: spi_esp32c3 {
		pinmux = <RZG2L_PORT_PINMUX(17, 0, 1)>, /* RSPI1_CK - ESP32_CK */
		         <RZG2L_PORT_PINMUX(17, 1, 1)>, /* RSPI1_MOSI - ESP32_MOSI */
		         <RZG2L_PORT_PINMUX(17, 2, 1)>; /* RSPI1_MISO - ESP32_MISO */
	};
	
	spics_esp32c3_pins: spics_esp32c3 {
		pinmux = <RZG2L_PORT_PINMUX(17, 3, 1)>; /* RSPI1_SSL - ESP32_SS */
		bias-pull-up;
	};
	
	gpio_esp32c3_pins: gpio_esp32c3 {
		pinmux = <RZG2L_PORT_PINMUX(18, 0, 0)>, /* P18_0 - ESP32_DR (porting_guide: SPI_DataReady) */
		         <RZG2L_PORT_PINMUX(18, 1, 0)>, /* P18_1 - ESP32_HS (porting_guide: SPI_Handshake) */
		         <RZG2L_PORT_PINMUX(18, 3, 0)>; /* P18_3 - ESP32_GPIO9 (datasheet: Boot Mode (PU) - 1=SPI Boot, 0=Joint Download Boot) */
	};
	
        gpio_esp32ce_pin: gpio_esp32ce {
        	// We configure this pin alone to make the pull-up working when the GPIO is not used by gpiolib.
                gpio-hog;
                /* P18_2 - ESP32_CE (porting_guide: ResetPin) */
                gpios = <RZG2L_GPIO(18, 2) (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
                input;
                line-name = "ESP32_CE";
        };
};

r9a07g043.dtsi:

scif4: serial@1004c800 {
	compatible = "renesas,scif-r9a07g043",
				   "renesas,scif-r9a07g044";
	reg = <0 0x1004c800 0 0x400>;
	interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
				   <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
				   <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
				   <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
				   <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
				   <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>;
	interrupt-names = "eri", "rxi", "txi",
					"bri", "dri", "tei";
	clocks = <&cpg CPG_MOD R9A07G043_SCIF4_CLK_PCK>;
	clock-names = "fck";
	dmas = <&dmac 0x4e89>, <&dmac 0x4e8a>;
	dma-names = "tx", "rx";
	power-domains = <&cpg>;
	resets = <&cpg R9A07G043_SCIF4_RST_SYSTEM_N>;
	status = "disabled";
};

spi1: spi@1004b000 {
	compatible = "renesas,r9a07g043-rspi", "renesas,rspi-rz";
	reg = <0 0x1004b000 0 0x400>;
	interrupts = <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>,
				   <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH>,
				   <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>;
	interrupt-names = "error", "rx", "tx";
	clocks = <&cpg CPG_MOD R9A07G043_RSPI1_CLKB>;
	resets = <&cpg R9A07G043_RSPI1_RST>;
	dmas = <&dmac 0x2e99>, <&dmac 0x2e9a>;
	dma-names = "tx", "rx";
	power-domains = <&cpg>;
	num-cs = <1>;
	#address-cells = <1>;
	#size-cells = <0>;
	status = "disabled";
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants