| /* |
| * Copyright (c) 2018 - 2020 Antmicro <www.antmicro.com> |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/dt-bindings/i2c/i2c.h> |
| |
| / { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| compatible = "litex,vexriscv", "litex-dev"; |
| model = "litex,vexriscv"; |
| |
| |
| chosen { |
| zephyr,entropy = &prbs0; |
| }; |
| |
| cpus { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| cpu0: cpu@0 { |
| clock-frequency = <100000000>; |
| compatible = "litex,vexriscv-standard", "riscv"; |
| device_type = "cpu"; |
| reg = <0>; |
| riscv,isa = "rv32im_zicsr_zifencei"; |
| status = "okay"; |
| }; |
| }; |
| soc { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| compatible = "litex,vexriscv"; |
| ranges; |
| ctrl0: soc_controller@e0000000 { |
| compatible = "litex,soc-controller"; |
| reg = <0xe0000000 0x4 |
| 0xe0000004 0x4 |
| 0xe0000008 0x4>; |
| reg-names = "reset", |
| "scratch", |
| "bus_errors"; |
| }; |
| intc0: interrupt-controller@bc0 { |
| compatible = "litex,vexriscv-intc0"; |
| #address-cells = <0>; |
| #interrupt-cells = <2>; |
| interrupt-controller; |
| reg = <0xbc0 0x4 0xfc0 0x4>; |
| reg-names = "irq_mask", "irq_pending"; |
| riscv,max-priority = <7>; |
| }; |
| uart0: serial@e0001800 { |
| compatible = "litex,uart"; |
| interrupt-parent = <&intc0>; |
| interrupts = <2 10>; |
| reg = <0xe0001800 0x4 |
| 0xe0001804 0x4 |
| 0xe0001808 0x4 |
| 0xe000180c 0x4 |
| 0xe0001810 0x4 |
| 0xe0001814 0x4 |
| 0xe0001818 0x4 |
| 0xe000181c 0x4>; |
| reg-names = |
| "rxtx", |
| "txfull", |
| "rxempty", |
| "ev_status", |
| "ev_pending", |
| "ev_enable", |
| "txempty", |
| "rxfull"; |
| status = "disabled"; |
| }; |
| spi0: spi@e0002000 { |
| compatible = "litex,spi"; |
| reg = <0xe0002000 0x4 |
| 0xe0002004 0x4 |
| 0xe0002008 0x4 |
| 0xe000200c 0x4 |
| 0xe0002010 0x4 |
| 0xe0002014 0x4>; |
| reg-names = "control", |
| "status", |
| "mosi", |
| "miso", |
| "cs", |
| "loopback"; |
| status = "disabled"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| spi1: spi@e000c000 { |
| compatible = "litex,spi-litespi"; |
| reg = <0xe000c000 0x4>, |
| <0xe000c004 0x4>, |
| <0xe000c008 0x4>, |
| <0xe000c00c 0x4>, |
| <0xe000c010 0x4>, |
| <0xe000c800 0x4>, |
| <0x60000000 0x1000000>; |
| reg-names = "core_mmap_dummy_bits", |
| "core_master_cs", |
| "core_master_phyconfig", |
| "core_master_rxtx", |
| "core_master_status", |
| "phy_clk_divisor", |
| "flash_mmap"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| spiflash0: flash@0 { |
| compatible = "jedec,spi-nor"; |
| reg = <0>; |
| spi-max-frequency = <10000000>; |
| }; |
| }; |
| timer0: timer@e0002800 { |
| compatible = "litex,timer0"; |
| interrupt-parent = <&intc0>; |
| interrupts = <1 0>; |
| reg = <0xe0002800 0x4 |
| 0xe0002804 0x4 |
| 0xe0002808 0x4 |
| 0xe000280c 0x4 |
| 0xe0002810 0x4 |
| 0xe0002814 0x4 |
| 0xe0002818 0x4 |
| 0xe000281c 0x4 |
| 0xe0002820 0x4 |
| 0xe0002824 0x8>; |
| reg-names = |
| "load", |
| "reload", |
| "en", |
| "update_value", |
| "value", |
| "ev_status", |
| "ev_pending", |
| "ev_enable", |
| "uptime_latch", |
| "uptime_cycles"; |
| status = "disabled"; |
| }; |
| wdt0: watchdog@e000d000 { |
| compatible = "litex,watchdog"; |
| interrupt-parent = <&intc0>; |
| reg = <0xe000d000 0x4>, |
| <0xe000d004 0x4>, |
| <0xe000d008 0x4>, |
| <0xe000d00c 0x4>, |
| <0xe000d010 0x4>, |
| <0xe000d014 0x4>; |
| reg-names = "control", |
| "cycles", |
| "remaining", |
| "ev_status", |
| "ev_pending", |
| "ev_enable"; |
| interrupts = <8 15>; |
| }; |
| mdio0: mdio@e0008000 { |
| compatible = "litex,liteeth-mdio"; |
| reg = <0xe0008000 0x4>, |
| <0xe0008004 0x4>, |
| <0xe0008008 0x4>; |
| reg-names = "crg_reset", |
| "mdio_w", |
| "mdio_r"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "disabled"; |
| |
| phy0: ethernet-phy@1 { |
| compatible = "ethernet-phy"; |
| reg = <1>; |
| }; |
| }; |
| eth0: ethernet@e0009800 { |
| compatible = "litex,liteeth"; |
| interrupt-parent = <&intc0>; |
| interrupts = <3 0>; |
| reg = <0xe0009800 0x4 |
| 0xe0009804 0x4 |
| 0xe0009808 0x4 |
| 0xe000980c 0x4 |
| 0xe0009810 0x4 |
| 0xe0009814 0x4 |
| 0xe0009818 0x4 |
| 0xe000981c 0x4 |
| 0xe0009820 0x4 |
| 0xe0009824 0x4 |
| 0xe0009828 0x4 |
| 0xe000982c 0x4 |
| 0xe0009830 0x4 |
| 0xe0009834 0x4 |
| 0xb0000000 0x2000>; |
| local-mac-address = [10 e2 d5 00 00 02]; |
| reg-names = "rx_slot", |
| "rx_length", |
| "rx_errors", |
| "rx_ev_status", |
| "rx_ev_pending", |
| "rx_ev_enable", |
| "tx_start", |
| "tx_ready", |
| "tx_level", |
| "tx_slot", |
| "tx_length", |
| "tx_ev_status", |
| "tx_ev_pending", |
| "tx_ev_enable", |
| "buffers"; |
| phy-handle = <&phy0>; |
| status = "disabled"; |
| }; |
| dna0: dna@e0003800 { |
| compatible = "litex,dna0"; |
| /* DNA data is 57-bits long, |
| so it requires 8 bytes. |
| In LiteX each 32-bit register holds |
| only a single byte of meaningful data, |
| hence 8 registers. */ |
| reg = <0xe0003800 0x20>; |
| reg-names = "mem"; |
| status = "disabled"; |
| }; |
| i2c0: i2c@e0005000 { |
| compatible = "litex,i2c"; |
| reg = <0xe0005000 0x4 0xe0005004 0x4>; |
| reg-names = "write", "read"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "disabled"; |
| }; |
| gpio_out: gpio@e0005800 { |
| compatible = "litex,gpio"; |
| reg = <0xe0005800 0x4>; |
| reg-names = "control"; |
| ngpios = <4>; |
| port-is-output; |
| status = "disabled"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| gpio_in: gpio@e0006000 { |
| compatible = "litex,gpio"; |
| reg = <0xe0006000 0x4 |
| 0xe0006004 0x4 |
| 0xe0006008 0x4 |
| 0xe0006010 0x4 |
| 0xe0006014 0x4>; |
| interrupt-parent = <&intc0>; |
| interrupts = <4 2>; |
| reg-names = "base", |
| "irq_mode", |
| "irq_edge", |
| "irq_pend", |
| "irq_en"; |
| ngpios = <4>; |
| status = "disabled"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| prbs0: prbs@e0006800 { |
| compatible = "litex,prbs"; |
| reg = <0xe0006800 0x4>; |
| reg-names = "status"; |
| status = "disabled"; |
| }; |
| pwm0: pwm@e0007000 { |
| compatible = "litex,pwm"; |
| reg = <0xe0007000 0x4 0xe0007004 0x10 0xe0007014 0x10>; |
| reg-names = "enable", "width", "period"; |
| status = "disabled"; |
| #pwm-cells = <2>; |
| }; |
| i2s_rx: i2s_rx@e000a800 { |
| compatible = "litex,i2s"; |
| reg = <0xe000a800 0x4 |
| 0xe000a804 0x4 |
| 0xe000a808 0x4 |
| 0xe000a80c 0x4 |
| 0xe000a810 0x4 |
| 0xe000a814 0x4 |
| 0xb1000000 0x40000>; |
| interrupt-parent = <&intc0>; |
| interrupts = <6 2>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg-names = "ev_status", |
| "ev_pending", |
| "ev_enable", |
| "rx_ctl", |
| "rx_stat", |
| "rx_conf", |
| "fifo"; |
| fifo_depth = <256>; |
| status = "disabled"; |
| }; |
| i2s_tx: i2s_tx@e000b000 { |
| compatible = "litex,i2s"; |
| reg = <0xe000b000 0x4 |
| 0xe000b004 0x4 |
| 0xe000b008 0x4 |
| 0xe000b00c 0x4 |
| 0xe000b010 0x4 |
| 0xe000b014 0x4 |
| 0xb2000000 0x40000>; |
| interrupt-parent = <&intc0>; |
| interrupts = <7 2>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg-names = "ev_status", |
| "ev_pending", |
| "ev_enable", |
| "tx_ctl", |
| "tx_stat", |
| "tx_conf", |
| "fifo"; |
| fifo_depth = <256>; |
| status = "disabled"; |
| }; |
| clock-outputs { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| clk0: clock-controller@0 { |
| #clock-cells = <1>; |
| reg = <0>; |
| compatible = "litex,clkout"; |
| clock-output-names = "CLK_0"; |
| litex,clock-frequency = <11289600>; |
| litex,clock-phase = <0>; |
| litex,clock-duty-num = <1>; |
| litex,clock-duty-den = <2>; |
| litex,clock-margin = <1>; |
| litex,clock-margin-exp = <2>; |
| status = "disabled"; |
| }; |
| clk1: clock-controller@1 { |
| #clock-cells = <1>; |
| reg = <1>; |
| compatible = "litex,clkout"; |
| clock-output-names = "CLK_1"; |
| litex,clock-frequency = <22579200>; |
| litex,clock-phase = <0>; |
| litex,clock-duty-num = <1>; |
| litex,clock-duty-den = <2>; |
| litex,clock-margin = <1>; |
| litex,clock-margin-exp = <2>; |
| status = "disabled"; |
| }; |
| }; |
| clock0: clock@e0004800 { |
| compatible = "litex,clk"; |
| reg = <0xe0004800 0x4 |
| 0xe0004804 0x4 |
| 0xe0004808 0x4 |
| 0xe000480c 0x4 |
| 0xe0004810 0x4 |
| 0xe0004814 0x4 |
| 0xe0004818 0x4 |
| 0xe000481c 0x4>; |
| reg-names = "drp_reset", |
| "drp_locked", |
| "drp_read", |
| "drp_write", |
| "drp_drdy", |
| "drp_adr", |
| "drp_dat_w", |
| "drp_dat_r"; |
| #clock-cells = <1>; |
| clocks = <&clk0 0>, <&clk1 1>; |
| clock-output-names = "CLK_0", "CLK_1"; |
| litex,lock-timeout = <10>; |
| litex,drdy-timeout = <10>; |
| litex,divclk-divide-min = <1>; |
| litex,divclk-divide-max = <107>; |
| litex,clkfbout-mult-min = <2>; |
| litex,clkfbout-mult-max = <65>; |
| litex,vco-freq-min = <600000000>; |
| litex,vco-freq-max = <1200000000>; |
| litex,clkout-divide-min = <1>; |
| litex,clkout-divide-max = <126>; |
| litex,vco-margin = <0>; |
| status = "disabled"; |
| }; |
| }; |
| }; |