| /* |
| * 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)>; |
| }; |
| }; |
| }; |
| }; |