blob: ce7ce8c2da09962042ebf6829ce13acc679c7d7d [file] [log] [blame]
/*
* Copyright (c) 2021 Telink Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/i2c/i2c.h>
#include <dt-bindings/pinctrl/b91-pinctrl.h>
/ {
#address-cells = <1>;
#size-cells = <1>;
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
reg = <0>;
clock-frequency = <24000000>;
compatible ="telink,b91", "riscv";
};
};
soc {
#address-cells = <1>;
#size-cells = <1>;
compatible = "telink,telink_b91-soc";
ranges;
ram_ilm: memory@0 {
compatible = "mmio-sram";
};
ram_dlm: memory@80000 {
compatible = "mmio-sram";
};
flash_mspi: flash-controller@80140100 {
compatible = "telink,b91-flash-controller";
label = "FLASH_MSPI";
reg = <0x80140100 0x40>;
#address-cells = <1>;
#size-cells = <1>;
flash: flash@20000000 {
compatible = "soc-nv-flash";
write-block-size = <1>;
};
};
power: power@80140180 {
compatible = "telink,b91-power";
reg = <0x80140180 0x40>;
power-mode = "LDO_1P4_LDO_1P8";
vbat-type = "VBAT_MAX_VALUE_GREATER_THAN_3V6";
status = "okay";
};
gpioa: gpio@80140300 {
compatible = "telink,b91-gpio";
gpio-controller;
interrupt-parent = <&plic0>;
interrupts = <25 1>, <26 1>, <27 1>;
reg = <0x80140300 0x08>;
label = "GPIO_A";
status = "disabled";
#gpio-cells = <2>;
};
gpiob: gpio@80140308 {
compatible = "telink,b91-gpio";
gpio-controller;
interrupt-parent = <&plic0>;
interrupts = <25 1>, <26 1>, <27 1>;
reg = <0x80140308 0x08>;
label = "GPIO_B";
status = "disabled";
#gpio-cells = <2>;
};
gpioc: gpio@80140310 {
compatible = "telink,b91-gpio";
gpio-controller;
interrupt-parent = <&plic0>;
interrupts = <25 1>, <26 1>, <27 1>;
reg = <0x80140310 0x08>;
label = "GPIO_C";
status = "disabled";
#gpio-cells = <2>;
};
gpiod: gpio@80140318 {
compatible = "telink,b91-gpio";
gpio-controller;
interrupt-parent = <&plic0>;
interrupts = <25 1>, <26 1>, <27 1>;
reg = <0x80140318 0x08>;
label = "GPIO_D";
status = "disabled";
#gpio-cells = <2>;
};
gpioe: gpio@80140320 {
compatible = "telink,b91-gpio";
gpio-controller;
interrupt-parent = <&plic0>;
interrupts = <25 1>, <26 1>, <27 1>;
reg = <0x80140320 0x08>;
label = "GPIO_E";
status = "disabled";
#gpio-cells = <2>;
};
plic0: interrupt-controller@e4000000 {
compatible = "sifive,plic-1.0.0";
#interrupt-cells = <2>;
interrupt-controller;
reg = < 0xe4000000 0x00001000
0xe4002000 0x00000800
0xe4200000 0x00010000 >;
reg-names = "prio", "irq_en", "reg";
riscv,max-priority = <3>;
riscv,ndev = <63>;
};
uart0: serial@80140080 {
compatible = "telink,b91-uart";
label = "UART_0";
reg = <0x80140080 0x40>;
interrupts = <19 1>;
interrupt-parent = <&plic0>;
status = "disabled";
};
uart1: serial@801400C0 {
compatible = "telink,b91-uart";
label = "UART_1";
reg = <0x801400C0 0x40>;
interrupts = <18 1>;
interrupt-parent = <&plic0>;
status = "disabled";
};
ieee802154: ieee802154@80140800 {
compatible = "telink,b91-zb";
reg = <0x80140800 0x800>;
label = "IEEE802154";
interrupt-parent = <&plic0>;
interrupts = <15 2>;
status = "disabled";
};
trng0: trng@80101800 {
compatible = "telink,b91-trng";
reg = <0x80101800 0x20>;
label = "TRNG";
status = "disabled";
};
pwm0: pwm@80140400 {
compatible = "telink,b91-pwm";
reg = <0x80140400 0x80>;
channels = <6>;
label = "PWM";
status = "disabled";
#pwm-cells = <2>;
};
hspi: spi@81FFFFC0 {
compatible = "telink,b91-spi";
label = "HSPI";
reg = <0x81FFFFC0 0x40>;
peripheral-id = "HSPI_MODULE";
cs0-pin = "0";
cs1-pin = "0";
cs2-pin = "0";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
pspi: spi@80140040 {
compatible = "telink,b91-spi";
label = "PSPI";
reg = <0x80140040 0x40>;
peripheral-id = "PSPI_MODULE";
cs0-pin = "0";
cs1-pin = "0";
cs2-pin = "0";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
i2c: i2c@80140280 {
compatible = "telink,b91-i2c";
label = "I2C";
reg = <0x80140280 0x40>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
clock-frequency = <I2C_BITRATE_STANDARD>;
};
pinmux: pinmux@80140330 {
compatible = "telink,b91-pinmux";
reg = <0x80140330 0x28
0x80140306 0x28
0x0000000e 0x0C>;
reg-names = "pin_mux",
"gpio_en",
"pull_up_en";
label = "PINMUX";
status = "disabled";
/* UART0: TX(PA3 PB2 PD2), RX(PA4 PB3 PD3) */
uart0_tx_pa3: uart0_tx_pa3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_A, B91_PIN_3)>;
};
uart0_tx_pb2: uart0_tx_pb2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_B, B91_PIN_2)>;
};
uart0_tx_pd2: uart0_tx_pd2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_D, B91_PIN_2)>;
};
uart0_rx_pa4: uart0_rx_pa4 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_A, B91_PIN_4)>;
};
uart0_rx_pb3: uart0_rx_pb3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_B, B91_PIN_3)>;
};
uart0_rx_pd3: uart0_rx_pd3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_D, B91_PIN_3)>;
};
/* UART1: TX(PC6 PD6 PE0), RX(PC7 PD7 PE2) */
uart1_tx_pc6: uart1_tx_pc6 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_C, B91_PIN_6)>;
};
uart1_tx_pd6: uart1_tx_pd6 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_D, B91_PIN_6)>;
};
uart1_tx_pe0: uart1_tx_pe0 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_E, B91_PIN_0)>;
};
uart1_rx_pc7: uart1_rx_pc7 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_C, B91_PIN_7)>;
};
uart1_rx_pd7: uart1_rx_pd7 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_D, B91_PIN_7)>;
};
uart1_rx_pe2: uart1_rx_pe2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_E, B91_PIN_2)>;
};
/* PWM Channel 0 (PB4, PC0, PE3) */
pwm_ch0_pb4: pwm_ch0_pb4 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_B, B91_PIN_4)>;
};
pwm_ch0_pc0: pwm_ch0_pc0 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_C, B91_PIN_0)>;
};
pwm_ch0_pe3: pwm_ch0_pe3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_E, B91_PIN_3)>;
};
/* PWM Channel 1 (PB5, PE1) */
pwm_ch1_pb5: pwm_ch1_pb5 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_B, B91_PIN_5)>;
};
pwm_ch1_pe1: pwm_ch1_pe1 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_E, B91_PIN_1)>;
};
/* PWM Channel 2 (PB7, PE2) */
pwm_ch2_pb7: pwm_ch2_pb7 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_B, B91_PIN_7)>;
};
pwm_ch2_pe2: pwm_ch2_pe2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_E, B91_PIN_2)>;
};
/* PWM Channel 3 (PB1, PE0) */
pwm_ch3_pb1: pwm_ch3_pb1 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_B, B91_PIN_1)>;
};
pwm_ch3_pe0: pwm_ch3_pe0 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_E, B91_PIN_0)>;
};
/* PWM Channel 4 (PD7, PE4) */
pwm_ch4_pd7: pwm_ch4_pd7 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_D, B91_PIN_7)>;
};
pwm_ch4_pe4: pwm_ch4_pe4 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_E, B91_PIN_4)>;
};
/* PWM Channel 5 (PB0, PE5) */
pwm_ch5_pb0: pwm_ch5_pb0 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_B, B91_PIN_0)>;
};
pwm_ch5_pe5: pwm_ch5_pe5 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_E, B91_PIN_5)>;
};
/* PSPI: CLK(PC5, PB5, PD1), MOSI(PC7, PB7, PD3), MISO(PC6, PB6, PD2) */
pspi_clk_pc5: pspi_clk_pc5 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_C, B91_PIN_5)>;
};
pspi_mosi_io0_pc7: pspi_mosi_io0_pc7 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_C, B91_PIN_7)>;
};
pspi_miso_io1_pc6: pspi_miso_io1_pc6 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_C, B91_PIN_6)>;
};
pspi_clk_pb5: pspi_clk_pb5 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_B, B91_PIN_5)>;
};
pspi_mosi_io0_pb7: pspi_mosi_io0_pb7 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_B, B91_PIN_7)>;
};
pspi_miso_io1_pb6: pspi_miso_io1_pb6 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_B, B91_PIN_6)>;
};
pspi_clk_pd1: pspi_clk_pd1 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_D, B91_PIN_1)>;
};
pspi_mosi_io0_pd3: pspi_mosi_io0_pd3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_D, B91_PIN_3)>;
};
pspi_miso_io1_pd2: pspi_miso_io1_pd2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_D, B91_PIN_2)>;
};
/* HSPI: CLK(PA2, PB4), MOSI(PA4, PB3), MISO(PA3, PB2) */
hspi_clk_pa2: hspi_clk_pa2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_A, B91_PIN_2)>;
};
hspi_mosi_io0_pa4: hspi_mosi_io0_pa4 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_A, B91_PIN_4)>;
};
hspi_miso_io1_pa3: hspi_miso_io1_pa3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_C, B91_PORT_A, B91_PIN_3)>;
};
hspi_clk_pb4: hspi_clk_pb4 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_B, B91_PIN_4)>;
};
hspi_mosi_io0_pb3: hspi_mosi_io0_pb3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_B, B91_PIN_3)>;
};
hspi_miso_io1_pb2: hspi_miso_io1_pb2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_B, B91_PIN_2)>;
};
hspi_io2_pb1: hspi_io2_pb1 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_B, B91_PIN_1)>;
};
hspi_io3_pb0: hspi_io3_pb0 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_B, B91_PIN_0)>;
};
/* Define I2C pins: SCL(PB2, PC1, PE0, PE1), SDA(PB3, PC2, PE2, PE3) */
i2c_scl_pb2: i2c_scl_pb2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_B, B91_PIN_2)>;
};
i2c_scl_pc1: i2c_scl_pc1 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_C, B91_PIN_1)>;
};
i2c_scl_pe0: i2c_scl_pe0 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_E, B91_PIN_0)>;
};
i2c_scl_pe1: i2c_scl_pe1 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_E, B91_PIN_1)>;
};
i2c_sda_pb3: i2c_sda_pb3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_B, B91_PORT_B, B91_PIN_3)>;
};
i2c_sda_pc2: i2c_sda_pc2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_C, B91_PIN_2)>;
};
i2c_sda_pe2: i2c_sda_pe2 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_E, B91_PIN_2)>;
};
i2c_sda_pe3: i2c_sda_pe3 {
pinmux = <B91_PINMUX_SET(B91_FUNC_A, B91_PORT_E, B91_PIN_3)>;
};
};
};
};