On 8.7.2016 17:42, Max Filippov wrote: > From: Chris Zankel <ch...@zankel.net> > > The 'xtfpga' board is actually a set of FPGA evaluation boards that > can be configured to run an Xtensa processor. > > - Avnet Xilinx LX60 > - Avnet Xilinx LX110 > - Avnet Xilinx LX200 > - Xilinx ML605 > - Xilinx KC705 > > These boards share the same components (open-ethernet, ns16550 serial, > lcd display, flash, etc.). > > Signed-off-by: Chris Zankel <ch...@zankel.net> > Signed-off-by: Max Filippov <jcmvb...@gmail.com> > --- > arch/xtensa/Kconfig | 3 + > arch/xtensa/dts/Makefile | 2 + > arch/xtensa/dts/kc705.dts | 15 ++ > arch/xtensa/dts/kc705_nommu.dts | 17 ++ > arch/xtensa/dts/ml605.dts | 15 ++ > arch/xtensa/dts/ml605_nommu.dts | 18 +++ > arch/xtensa/dts/xtfpga-flash-128m.dtsi | 28 ++++ > arch/xtensa/dts/xtfpga-flash-16m.dtsi | 28 ++++ > arch/xtensa/dts/xtfpga.dtsi | 137 ++++++++++++++++ > board/cadence/xtfpga/Kconfig | 43 +++++ > board/cadence/xtfpga/MAINTAINERS | 6 + > board/cadence/xtfpga/Makefile | 8 + > board/cadence/xtfpga/README | 125 ++++++++++++++ > board/cadence/xtfpga/lcd.c | 88 ++++++++++ > board/cadence/xtfpga/lcd.h | 12 ++ > board/cadence/xtfpga/xtfpga.c | 173 ++++++++++++++++++++ > configs/xtfpga_defconfig | 13 ++ > include/configs/xtfpga.h | 286 > +++++++++++++++++++++++++++++++++ > 18 files changed, 1017 insertions(+) > create mode 100644 arch/xtensa/dts/kc705.dts > create mode 100644 arch/xtensa/dts/kc705_nommu.dts > create mode 100644 arch/xtensa/dts/ml605.dts > create mode 100644 arch/xtensa/dts/ml605_nommu.dts > create mode 100644 arch/xtensa/dts/xtfpga-flash-128m.dtsi > create mode 100644 arch/xtensa/dts/xtfpga-flash-16m.dtsi > create mode 100644 arch/xtensa/dts/xtfpga.dtsi > create mode 100644 board/cadence/xtfpga/Kconfig > create mode 100644 board/cadence/xtfpga/MAINTAINERS > create mode 100644 board/cadence/xtfpga/Makefile > create mode 100644 board/cadence/xtfpga/README > create mode 100644 board/cadence/xtfpga/lcd.c > create mode 100644 board/cadence/xtfpga/lcd.h > create mode 100644 board/cadence/xtfpga/xtfpga.c > create mode 100644 configs/xtfpga_defconfig > create mode 100644 include/configs/xtfpga.h > > diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig > index e4e3625..d41949f 100644 > --- a/arch/xtensa/Kconfig > +++ b/arch/xtensa/Kconfig > @@ -11,9 +11,12 @@ config SYS_CPU > choice > prompt "Target select" > > +config TARGET_XTFPGA > + bool "Support XTFPGA" > > endchoice > > +source "board/cadence/xtfpga/Kconfig" > > config HAVE_SYS_ASCDISP > bool > diff --git a/arch/xtensa/dts/Makefile b/arch/xtensa/dts/Makefile > index eacf6f3..e14cdac 100644 > --- a/arch/xtensa/dts/Makefile > +++ b/arch/xtensa/dts/Makefile > @@ -2,6 +2,8 @@ > # SPDX-License-Identifier: GPL-2.0+ > # > > +dtb-$(CONFIG_XTFPGA) += ml605.dtb ml605_nommu.dtb kc705.dtb kc705_nommu.dtb > + > targets += $(dtb-y) > > DTC_FLAGS += > diff --git a/arch/xtensa/dts/kc705.dts b/arch/xtensa/dts/kc705.dts > new file mode 100644 > index 0000000..3b89e83 > --- /dev/null > +++ b/arch/xtensa/dts/kc705.dts > @@ -0,0 +1,15 @@ > +/dts-v1/; > +/include/ "xtfpga.dtsi" > +/include/ "xtfpga-flash-128m.dtsi" > + > +/ { > + compatible = "cdns,xtensa-kc705"; > + chosen { > + bootargs = "earlycon=uart8250,mmio32native,0xfd050020,115200n8 > console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug"; > + stdout-path = &serial0; > + }; > + memory@0 { > + device_type = "memory"; > + reg = <0x00000000 0x38000000>; > + }; > +}; > diff --git a/arch/xtensa/dts/kc705_nommu.dts b/arch/xtensa/dts/kc705_nommu.dts > new file mode 100644 > index 0000000..57f0dab > --- /dev/null > +++ b/arch/xtensa/dts/kc705_nommu.dts > @@ -0,0 +1,17 @@ > +/dts-v1/; > +/include/ "xtfpga.dtsi" > +/include/ "xtfpga-flash-128m.dtsi" > + > +/ { > + compatible = "cdns,xtensa-kc705"; > + chosen { > + bootargs = "earlycon=uart8250,mmio32native,0x9d050020,115200n8 > console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug"; > + }; > + memory@0 { > + device_type = "memory"; > + reg = <0x60000000 0x10000000>; > + }; > + soc { > + ranges = <0x00000000 0x90000000 0x10000000>; > + }; > +}; > diff --git a/arch/xtensa/dts/ml605.dts b/arch/xtensa/dts/ml605.dts > new file mode 100644 > index 0000000..f323f96 > --- /dev/null > +++ b/arch/xtensa/dts/ml605.dts > @@ -0,0 +1,15 @@ > +/dts-v1/; > +/include/ "xtfpga.dtsi" > +/include/ "xtfpga-flash-16m.dtsi" > + > +/ { > + compatible = "cdns,xtensa-ml605"; > + chosen { > + bootargs = "earlycon=uart8250,mmio32native,0xfd050020,115200n8 > console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug"; > + stdout-path = &serial0; > + }; > + memory@0 { > + device_type = "memory"; > + reg = <0x00000000 0x18000000>; > + }; > +}; > diff --git a/arch/xtensa/dts/ml605_nommu.dts b/arch/xtensa/dts/ml605_nommu.dts > new file mode 100644 > index 0000000..6bdf400 > --- /dev/null > +++ b/arch/xtensa/dts/ml605_nommu.dts > @@ -0,0 +1,18 @@ > +/dts-v1/; > +/include/ "xtfpga.dtsi" > +/include/ "xtfpga-flash-16m.dtsi" > + > +/ { > + compatible = "cdns,xtensa-ml605"; > + chosen { > + bootargs = "earlycon=uart8250,mmio32native,0x9d050020,115200n8 > console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug"; > + stdout-path = &serial0; > + }; > + memory@0 { > + device_type = "memory"; > + reg = <0x00000000 0x10000000>; > + }; > + soc { > + ranges = <0x00000000 0x90000000 0x10000000>; > + }; > +}; > diff --git a/arch/xtensa/dts/xtfpga-flash-128m.dtsi > b/arch/xtensa/dts/xtfpga-flash-128m.dtsi > new file mode 100644 > index 0000000..d3a88e0 > --- /dev/null > +++ b/arch/xtensa/dts/xtfpga-flash-128m.dtsi > @@ -0,0 +1,28 @@ > +/ { > + soc { > + flash: flash@00000000 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "cfi-flash"; > + reg = <0x00000000 0x08000000>; > + bank-width = <2>; > + device-width = <2>; > + partition@0x0 { > + label = "data"; > + reg = <0x00000000 0x06000000>; > + }; > + partition@0x6000000 { > + label = "boot loader area"; > + reg = <0x06000000 0x00800000>; > + }; > + partition@0x6800000 { > + label = "kernel image"; > + reg = <0x06800000 0x017e0000>; > + }; > + partition@0x7fe0000 { > + label = "boot environment"; > + reg = <0x07fe0000 0x00020000>; > + }; > + }; > + }; > +}; > diff --git a/arch/xtensa/dts/xtfpga-flash-16m.dtsi > b/arch/xtensa/dts/xtfpga-flash-16m.dtsi > new file mode 100644 > index 0000000..1d97203 > --- /dev/null > +++ b/arch/xtensa/dts/xtfpga-flash-16m.dtsi > @@ -0,0 +1,28 @@ > +/ { > + soc { > + flash: flash@08000000 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "cfi-flash"; > + reg = <0x08000000 0x01000000>; > + bank-width = <2>; > + device-width = <2>; > + partition@0x0 { > + label = "boot loader area"; > + reg = <0x00000000 0x00400000>; > + }; > + partition@0x400000 { > + label = "kernel image"; > + reg = <0x00400000 0x00600000>; > + }; > + partition@0xa00000 { > + label = "data"; > + reg = <0x00a00000 0x005e0000>; > + }; > + partition@0xfe0000 { > + label = "boot environment"; > + reg = <0x00fe0000 0x00020000>; > + }; > + }; > + }; > +}; > diff --git a/arch/xtensa/dts/xtfpga.dtsi b/arch/xtensa/dts/xtfpga.dtsi > new file mode 100644 > index 0000000..cd45f9c > --- /dev/null > +++ b/arch/xtensa/dts/xtfpga.dtsi > @@ -0,0 +1,137 @@ > +/ { > + compatible = "cdns,xtensa-xtfpga"; > + #address-cells = <1>; > + #size-cells = <1>; > + interrupt-parent = <&pic>; > + > + chosen { > + bootargs = "earlycon=uart8250,mmio32native,0xfd050020,115200n8 > console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug"; > + }; > + > + memory@0 { > + device_type = "memory"; > + reg = <0x00000000 0x06000000>; > + }; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + cpu@0 { > + compatible = "cdns,xtensa-cpu"; > + reg = <0>; > + /* Filled in by platform_setup from FPGA register > + * clock-frequency = <100000000>; > + */ > + }; > + }; > + > + pic: pic { > + compatible = "cdns,xtensa-pic"; > + /* one cell: internal irq number, > + * two cells: second cell == 0: internal irq number > + * second cell == 1: external irq number > + */ > + #interrupt-cells = <2>; > + interrupt-controller; > + }; > + > + clocks { > + osc: main-oscillator { > + #clock-cells = <0>; > + compatible = "fixed-clock"; > + }; > + > + clk54: clk54 { > + #clock-cells = <0>; > + compatible = "fixed-clock"; > + clock-frequency = <54000000>; > + }; > + }; > + > + soc { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "simple-bus"; > + ranges = <0x00000000 0xf0000000 0x10000000>; > + > + serial0: serial@0d050020 { > + device_type = "serial"; > + compatible = "ns16550a"; > + no-loopback-test; > + reg = <0x0d050020 0x20>; > + reg-shift = <2>; > + reg-io-width = <4>; > + native-endian; > + interrupts = <0 1>; /* external irq 0 */ > + clocks = <&osc>; > + }; > + > + enet0: ethoc@0d030000 { > + compatible = "opencores,ethoc"; > + reg = <0x0d030000 0x4000 0x0d800000 0x4000>; > + native-endian; > + interrupts = <1 1>; /* external irq 1 */ > + local-mac-address = [00 50 c2 13 6f 00]; > + clocks = <&osc>; > + }; > + > + i2s0: xtfpga-i2s@0d080000 { > + #sound-dai-cells = <0>; > + compatible = "cdns,xtfpga-i2s"; > + reg = <0x0d080000 0x40>; > + interrupts = <2 1>; /* external irq 2 */ > + clocks = <&cdce706 4>; > + }; > + > + i2c0: i2c-master@0d090000 { > + compatible = "opencores,i2c-ocores"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x0d090000 0x20>; > + reg-shift = <2>; > + reg-io-width = <4>; > + native-endian; > + interrupts = <4 1>; > + clocks = <&osc>; > + > + cdce706: clock-synth@69 { > + compatible = "ti,cdce706"; > + #clock-cells = <1>; > + reg = <0x69>; > + clocks = <&clk54>; > + clock-names = "clk_in0"; > + }; > + }; > + > + spi0: spi-master@0d0a0000 { > + compatible = "cdns,xtfpga-spi"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x0d0a0000 0xc>; > + > + tlv320aic23: sound-codec@0 { > + #sound-dai-cells = <0>; > + compatible = "tlv320aic23"; > + reg = <0>; > + spi-max-frequency = <12500000>; > + }; > + }; > + }; > + > + sound { > + compatible = "simple-audio-card"; > + simple-audio-card,format = "i2s"; > + simple-audio-card,mclk-fs = <256>; > + > + simple-audio-card,cpu { > + sound-dai = <&i2s0>; > + }; > + > + simple-audio-card,codec { > + sound-dai = <&tlv320aic23>; > + simple-audio-card,bitclock-master = <0>; > + simple-audio-card,frame-master = <0>; > + clocks = <&cdce706 4>; > + }; > + }; > +}; > diff --git a/board/cadence/xtfpga/Kconfig b/board/cadence/xtfpga/Kconfig > new file mode 100644 > index 0000000..a7b65ef > --- /dev/null > +++ b/board/cadence/xtfpga/Kconfig > @@ -0,0 +1,43 @@ > +if TARGET_XTFPGA > + > +choice > + prompt "XTFPGA board type select" > + > +config XTFPGA_LX60 > + bool "Support Avnet LX60" > + select HAVE_SYS_ASCDISP > +config XTFPGA_LX110 > + bool "Support Avnet LX110" > + select HAVE_SYS_ASCDISP > +config XTFPGA_LX200 > + bool "Support Avnet LX200" > +config XTFPGA_ML605 > + bool "Support Xilinx ML605" > + select HAVE_SYS_ASCDISP > +config XTFPGA_KC705 > + bool "Support Xilinx KC705" > + select HAVE_SYS_ASCDISP > + > +endchoice > + > +config SYS_BOARD > + string > + default "xtfpga" > + > +config SYS_VENDOR > + string > + default "cadence" > + > +config SYS_CONFIG_NAME > + string > + default "xtfpga" > + > +config BOARD_SDRAM_SIZE > + hex > + default 0x04000000 if XTFPGA_LX60 > + default 0x03000000 if XTFPGA_LX110 > + default 0x06000000 if XTFPGA_LX200 > + default 0x18000000 if XTFPGA_ML605 > + default 0x38000000 if XTFPGA_KC705
You should read this directly from DTS files. The same you have below in config. Thanks, Michal
signature.asc
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot