| /* |
| * Copyright (c) 2018 - 2020 Antmicro <www.antmicro.com> |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| / { |
| #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>; |
| cpu@0 { |
| clock-frequency = <100000000>; |
| compatible = "riscv"; |
| device_type = "cpu"; |
| reg = <0>; |
| riscv,isa = "rv32imac"; |
| status = "okay"; |
| timebase-frequency = <32768>; |
| }; |
| }; |
| soc { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| compatible = "litex,vexriscv"; |
| ranges; |
| intc0: interrupt-controller@bc0 { |
| #interrupt-cells = <2>; |
| compatible = "vexriscv-intc0"; |
| interrupt-controller; |
| reg = <0xbc0 0x4 0xfc0 0x4>; |
| reg-names = "irq_mask", "irq_pending"; |
| riscv,max-priority = <7>; |
| }; |
| uart0: serial@e0001800 { |
| compatible = "litex,uart0"; |
| 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"; |
| label = "uart0"; |
| 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"; |
| label = "spi0"; |
| status = "disabled"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| 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"; |
| label = "timer0"; |
| status = "disabled"; |
| }; |
| eth0: ethernet@e0009800 { |
| compatible = "litex,eth0"; |
| 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"; |
| label = "eth0"; |
| 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"; |
| label = "dna0"; |
| status = "disabled"; |
| }; |
| i2c0: i2c@e0005000 { |
| compatible = "litex,i2c"; |
| reg = <0xe0005000 0x4 0xe0005004 0x4>; |
| reg-names = "write", "read"; |
| label = "i2c0"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "disabled"; |
| }; |
| gpio_out: gpio@e0005800 { |
| compatible = "litex,gpio"; |
| reg = <0xe0005800 0x4>; |
| reg-names = "control"; |
| ngpios = <4>; |
| label = "gpio_out"; |
| 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>; |
| label = "gpio_in"; |
| status = "disabled"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| prbs0: prbs@e0006800 { |
| compatible = "litex,prbs"; |
| reg = <0xe0006800 0x4>; |
| reg-names = "status"; |
| label = "prbs0"; |
| status = "disabled"; |
| }; |
| pwm0: pwm@e0007000 { |
| compatible = "litex,pwm"; |
| reg = <0xe0007000 0x4 0xe0007004 0x10 0xe0007014 0x10>; |
| reg-names = "enable", "width", "period"; |
| label = "pwm0"; |
| 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>; |
| label = "i2s_rx"; |
| 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>; |
| label = "i2s_tx"; |
| 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"; |
| label = "clock0"; |
| 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,sys-clock-frequency = <100000000>; |
| 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"; |
| }; |
| }; |
| }; |