| /* |
| * Copyright (c) 2024-2025 Renesas Electronics Corporation |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /dts-v1/; |
| |
| #include <renesas/ra/ra8/r7fa8d1bhecbd.dtsi> |
| #include <zephyr/dt-bindings/flash_controller/xspi.h> |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input-event-codes.h> |
| #include <zephyr/dt-bindings/memory-attr/memory-attr-arm.h> |
| #include <zephyr/dt-bindings/memory-controller/renesas,ra-sdram.h> |
| #include <zephyr/dt-bindings/adc/adc.h> |
| #include <zephyr/dt-bindings/gpio/dvp-20pin-connector.h> |
| #include <zephyr/dt-bindings/pwm/pwm.h> |
| #include "ek_ra8d1-pinctrl.dtsi" |
| |
| / { |
| model = "Renesas EK-RA8D1"; |
| compatible = "renesas,ra8d1", "renesas,ra8"; |
| |
| chosen { |
| zephyr,sram = &sram0; |
| zephyr,flash = &flash0; |
| zephyr,console = &uart9; |
| zephyr,shell-uart = &uart9; |
| zephyr,entropy = &trng; |
| zephyr,flash-controller = &flash1; |
| zephyr,canbus = &canfd0; |
| zephyr,crc = &crc; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| |
| led1: led1 { |
| gpios = <&ioport6 0 GPIO_ACTIVE_HIGH>; |
| label = "LED1"; |
| }; |
| |
| led2: led2 { |
| gpios = <&ioport4 14 GPIO_ACTIVE_HIGH>; |
| label = "LED2"; |
| }; |
| |
| led3: led3 { |
| gpios = <&ioport1 7 GPIO_ACTIVE_HIGH>; |
| label = "LED3"; |
| }; |
| }; |
| |
| mikrobus_header: mikrobus-connector { |
| compatible = "mikro-bus"; |
| #gpio-cells = <2>; |
| gpio-map-mask = <0xffffffff 0xffffffc0>; |
| gpio-map-pass-thru = <0 0x3f>; |
| gpio-map = <0 0 &ioport0 4 0>, /* AN */ |
| <1 0 &ioport5 7 0>, /* RST */ |
| <2 0 &ioport4 13 0>, /* CS */ |
| <3 0 &ioport4 12 0>, /* SCK */ |
| <4 0 &ioport4 10 0>, /* MISO */ |
| <5 0 &ioport4 11 0>, /* MOSI */ |
| /* +3.3V */ |
| /* GND */ |
| <6 0 &ioport9 7 0>, /* PWM */ |
| <7 0 &ioport0 10 0>, /* INT */ |
| <8 0 &ioport4 8 0>, /* RX */ |
| <9 0 &ioport4 9 0>, /* TX */ |
| <10 0 &ioport4 0 0>, /* SCL */ |
| <11 0 &ioport4 1 0>; /* SDA */ |
| /* +5V */ |
| /* GND */ |
| }; |
| |
| buttons { |
| compatible = "gpio-keys"; |
| |
| button0: s1 { |
| gpios = <&ioport0 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; |
| label = "Push button switch 1"; |
| zephyr,code = <INPUT_KEY_0>; |
| }; |
| |
| button1: s2 { |
| gpios = <&ioport0 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; |
| label = "Push button switch 2"; |
| zephyr,code = <INPUT_KEY_1>; |
| }; |
| }; |
| |
| sdram1: sdram@68000000 { |
| compatible = "zephyr,memory-region", "mmio-sram"; |
| device_type = "memory"; |
| reg = <0x68000000 DT_SIZE_M(64)>; /* 512 Mbits */ |
| zephyr,memory-region = "SDRAM"; |
| status = "okay"; |
| }; |
| |
| renesas_mipi_connector: mipi-connector { |
| compatible = "renesas,ra-gpio-mipi-header"; |
| #gpio-cells = <2>; |
| gpio-map-mask = <0xffffffff 0xffffffc0>; |
| gpio-map-pass-thru = <0 0x3f>; |
| gpio-map = <14 0 &ioport5 11 0>, /* IIC_SDA */ |
| <15 0 &ioport4 4 0>, /* DISP_BLEN */ |
| <16 0 &ioport5 12 0>, /* IIC_SCL */ |
| <17 0 &ioport5 10 0>, /* DISP_INT */ |
| <18 0 &ioporta 1 0>; /* DISP_RST */ |
| }; |
| |
| ek_ra8d1_parallel_graphics_expansion: parallel-graphics-expansion { |
| compatible = "renesas,ra-parallel-graphics-header"; |
| #gpio-cells = <2>; |
| gpio-map-mask = <0xffffffff 0xffffffc0>; |
| gpio-map-pass-thru = <0 0x3f>; |
| gpio-map = <1 0 &ioport4 4 0>, /* DISP_BLEN */ |
| <2 0 &ioport5 11 0>, /* IIC_SDA */ |
| <3 0 &ioport5 10 0>, /* DISP_INT */ |
| <4 0 &ioport5 12 0>, /* IIC_SCL */ |
| <6 0 &ioporta 1 0>; /* DISP_RST */ |
| }; |
| |
| dvp_20pin_connector: dvp-20pin-connector { |
| compatible = "arducam,dvp-20pin-connector"; |
| #gpio-cells = <2>; |
| gpio-map-mask = <0xffffffff 0xffffffc0>; |
| gpio-map-pass-thru = <0x0 0x3f>; |
| gpio-map = <DVP_20PIN_PEN 0 &ioport7 4 0>, |
| <DVP_20PIN_PDN 0 &ioport7 5 0>; |
| }; |
| |
| aliases { |
| led0 = &led1; |
| sw0 = &button0; |
| sw1 = &button1; |
| mipi-dsi = &mipi_dsi; |
| watchdog0 = &wdt; |
| }; |
| |
| zephyr,user { |
| i3c-pullup-gpios = <&ioportb 2 GPIO_ACTIVE_LOW>, |
| <&ioport7 11 GPIO_ACTIVE_LOW>; |
| }; |
| }; |
| |
| &xtal { |
| clock-frequency = <DT_FREQ_M(20)>; |
| mosel = <0>; |
| #clock-cells = <0>; |
| status = "okay"; |
| }; |
| |
| &subclk { |
| status = "okay"; |
| }; |
| |
| &pll { |
| status = "okay"; |
| |
| pllp { |
| status = "okay"; |
| }; |
| |
| pllq { |
| div = <4>; |
| freq = <DT_FREQ_M(240)>; |
| status = "okay"; |
| }; |
| |
| pllr { |
| status = "okay"; |
| }; |
| }; |
| |
| &pll2 { |
| status = "okay"; |
| clocks = <&xtal>; |
| div = <2>; |
| mul = <80 0>; |
| |
| pll2p { |
| status = "okay"; |
| freq = <DT_FREQ_M(400)>; |
| div = <2>; |
| }; |
| }; |
| |
| &sciclk { |
| clocks = <&pllp>; |
| div = <4>; |
| status = "okay"; |
| }; |
| |
| &canfdclk { |
| clocks = <&pllp>; |
| div = <6>; |
| status = "okay"; |
| }; |
| |
| &lcdclk { |
| clocks = <&pll>; |
| div = <2>; |
| status = "okay"; |
| }; |
| |
| &octaspiclk { |
| clocks = <&pll2p>; |
| div = <2>; |
| status = "okay"; |
| }; |
| |
| &uclk { |
| clocks = <&pllq>; |
| div = <5>; |
| status = "okay"; |
| }; |
| |
| &i3cclk { |
| clocks = <&pllp>; |
| div = <3>; |
| status = "okay"; |
| }; |
| |
| &ioport0 { |
| status = "okay"; |
| }; |
| |
| &ioport1 { |
| status = "okay"; |
| }; |
| |
| &ioport4 { |
| status = "okay"; |
| }; |
| |
| &ioport5 { |
| status = "okay"; |
| }; |
| |
| &ioport6 { |
| status = "okay"; |
| }; |
| |
| &ioport7 { |
| status = "okay"; |
| }; |
| |
| &ioport9 { |
| status = "okay"; |
| }; |
| |
| &ioporta { |
| status = "okay"; |
| }; |
| |
| &ioportb { |
| status = "okay"; |
| }; |
| |
| &sci9 { |
| pinctrl-0 = <&sci9_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| uart9: uart { |
| current-speed = <115200>; |
| status = "okay"; |
| }; |
| }; |
| |
| &sci4 { |
| pinctrl-0 = <&sci4_default>; |
| pinctrl-names = "default"; |
| |
| i2c4: i2c { |
| sda-output-delay = <300>; |
| noise-filter-clock-select = <1>; |
| bit-rate-modulation; |
| }; |
| }; |
| |
| &sci3 { |
| pinctrl-0 = <&sci3_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| uart3: uart { |
| current-speed = <115200>; |
| status = "okay"; |
| }; |
| }; |
| |
| &trng { |
| status = "okay"; |
| }; |
| |
| &spi1 { |
| pinctrl-0 = <&spi1_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| }; |
| |
| &i3c0 { |
| i2c-scl-hz = <DT_FREQ_K(400)>; |
| i3c-scl-hz = <DT_FREQ_M(4)>; |
| pinctrl-0 = <&i3c0_default>; |
| pinctrl-names = "default"; |
| interrupts = <60 1>, <61 1>, <62 1>, <63 1>, <64 1>, <65 1>; |
| interrupt-names = "resp", "rx", "tx", "rcv", "ibi", "eei"; |
| status = "okay"; |
| }; |
| |
| &flash1 { |
| partitions { |
| compatible = "fixed-partitions"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| storage_partition: partition@0 { |
| label = "storage"; |
| reg = <0X0 DT_SIZE_K(12)>; |
| }; |
| }; |
| }; |
| |
| &pwm3 { |
| pinctrl-0 = <&pwm3_default>; |
| pinctrl-names = "default"; |
| interrupts = <51 12>, <52 12>; |
| interrupt-names = "gtioca", "overflow"; |
| |
| cam_clock: pwmclock { |
| compatible = "pwm-clock"; |
| status = "disabled"; |
| #clock-cells = <1>; |
| clock-frequency = <24000000>; |
| pwms = <&pwm3 0 PWM_KHZ(24000) PWM_POLARITY_NORMAL>; |
| }; |
| }; |
| |
| &pwm7 { |
| pinctrl-0 = <&pwm7_default>; |
| interrupts = <40 1>, <41 1>; |
| interrupt-names = "gtioca", "overflow"; |
| pinctrl-names = "default"; |
| status = "okay"; |
| }; |
| |
| &canfd_global { |
| status = "okay"; |
| |
| canfd0 { |
| pinctrl-0 = <&canfd0_default>; |
| pinctrl-names = "default"; |
| rx-max-filters = <16>; |
| status = "okay"; |
| }; |
| }; |
| |
| &iic1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| clock-frequency = <DT_FREQ_M(1)>; |
| pinctrl-0 = <&iic1_default>; |
| pinctrl-names = "default"; |
| }; |
| |
| ð { |
| local-mac-address = [74 90 50 B0 5D E9]; |
| status = "okay"; |
| phy-handle = <&phy>; |
| }; |
| |
| &mdio { |
| pinctrl-0 = <ðer_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| phy: ethernet-phy@5 { |
| compatible = "ethernet-phy"; |
| reg = <5>; |
| status = "okay"; |
| }; |
| }; |
| |
| &usbhs { |
| pinctrl-0 = <&usbhs_default>; |
| pinctrl-names = "default"; |
| maximum-speed = "high-speed"; |
| status = "okay"; |
| |
| zephyr_udc0: udc { |
| status = "okay"; |
| }; |
| }; |
| |
| &usbhs_phy { |
| phys-clock-src = "xtal"; |
| }; |
| |
| &adc0 { |
| status = "okay"; |
| pinctrl-0 = <&adc0_default>; |
| pinctrl-names = "default"; |
| }; |
| |
| &dac0 { |
| pinctrl-0 = <&dac0_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| }; |
| |
| &port_irq12 { |
| interrupts = <88 12>; |
| status = "okay"; |
| }; |
| |
| &port_irq13 { |
| interrupts = <89 12>; |
| status = "okay"; |
| }; |
| |
| &sdram { |
| pinctrl-0 = <&sdram_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| auto-refresh-interval = <SDRAM_AUTO_REFREDSH_INTERVEL_10CYCLES>; |
| auto-refresh-count = <SDRAM_AUTO_REFREDSH_COUNT_8TIMES>; |
| precharge-cycle-count = <SDRAM_AUTO_PRECHARGE_CYCLE_3CYCLES>; |
| multiplex-addr-shift = "10-bit"; |
| edian-mode = "little-endian"; |
| continuous-access; |
| bus-width = "16-bit"; |
| |
| bank@0 { |
| reg = <0>; |
| renesas,ra-sdram-timing = <SDRAM_TRAS_6CYCLES |
| SDRAM_TRCD_3CYCLES |
| SDRAM_TRP_3CYCLES |
| SDRAM_TWR_2CYCLES |
| SDRAM_TCL_3CYCLES |
| 937 |
| SDRAM_TREFW_8CYCLES>; |
| }; |
| }; |
| |
| &ceu { |
| pinctrl-0 = <&ceu_default>; |
| pinctrl-names = "default"; |
| interrupts = <53 12>; |
| interrupt-names = "ceui"; |
| clocks = <&pclka MSTPC 16>, <&cam_clock 0>; |
| clock-names = "pclk", "cam-xclk"; |
| burst-transfer = <256>; |
| }; |
| |
| zephyr_lcdif: &lcdif {}; |
| |
| zephyr_mipi_dsi: &mipi_dsi {}; |
| |
| renesas_mipi_i2c: &iic1 {}; |
| |
| pmod_sd_shield: &sdhc1 {}; |
| |
| dvp_20pin_i2c: &iic1 {}; |
| |
| dvp_20pin_interface: &ceu {}; |
| |
| &usbfs { |
| pinctrl-0 = <&usbfs_default>; |
| pinctrl-names = "default"; |
| maximum-speed = "full-speed"; |
| }; |
| |
| &wdt { |
| status = "okay"; |
| }; |
| |
| &ulpt0 { |
| status = "okay"; |
| |
| timer { |
| status = "okay"; |
| }; |
| }; |
| |
| &ulpt1 { |
| status = "okay"; |
| |
| timer { |
| status = "okay"; |
| }; |
| }; |
| |
| &ospi0 { |
| pinctrl-0 = <&ospi0_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| s28hl512t: ospi-nor-flash@90000000 { |
| compatible = "renesas,ra-ospi-b-nor"; |
| protocol-mode = <XSPI_OCTO_MODE>; |
| data-rate = <XSPI_DTR_TRANSFER>; |
| ospi-max-frequency = <DT_FREQ_M(200)>; |
| reg = <0x90000000 DT_SIZE_M(64)>; |
| write-block-size = <1>; |
| status = "okay"; |
| |
| pages_layout: pages_layout { |
| pages_layout_4k: pages_layout_4k { |
| pages-count = <32>; |
| pages-size = <DT_SIZE_K(4)>; |
| }; |
| |
| pages_layout_128k: pages_layout_128k { |
| pages-count = <1>; |
| pages-size = <DT_SIZE_K(128)>; |
| }; |
| |
| pages_layout_256k: pages_layout_256k { |
| pages-count = <255>; |
| pages-size = <DT_SIZE_K(256)>; |
| }; |
| }; |
| |
| partitions { |
| compatible = "fixed-partitions"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| partition@0 { |
| label = "nor"; |
| reg = <0x00000000 DT_SIZE_M(64)>; |
| }; |
| }; |
| }; |
| }; |
| |
| &crc { |
| status = "okay"; |
| }; |
| |
| mikrobus_serial: &uart3 {}; |
| |
| mikrobus_spi: &spi1 {}; |