[meta-xilinx] [PATCH 09/20] conf/machine: Add zybo-linux-bd-zynq7 machine support

Jason Wu jason.wu.misc at gmail.com
Mon Apr 11 06:23:14 PDT 2016


* base on Zybo linux_bd reference design
* Add device tree with required nodes
* hdf is fetch from Digilent github

Signed-off-by: Jason Wu <jason.wu.misc at gmail.com>
---
 conf/machine/zybo-linux-bd-zynq7.conf              |  30 +++
 .../device-tree/files/zybo-linux-bd/pcw.dtsi       |  63 ++++++
 .../device-tree/files/zybo-linux-bd/pl.dtsi        | 213 +++++++++++++++++++++
 .../files/zybo-linux-bd/zybo-linux-bd.dts          | 185 ++++++++++++++++++
 .../hardware-definition-file/zybo-linux-bd.bb      |  22 +++
 5 files changed, 513 insertions(+)
 create mode 100644 conf/machine/zybo-linux-bd-zynq7.conf
 create mode 100644 recipes-bsp/device-tree/files/zybo-linux-bd/pcw.dtsi
 create mode 100644 recipes-bsp/device-tree/files/zybo-linux-bd/pl.dtsi
 create mode 100644 recipes-bsp/device-tree/files/zybo-linux-bd/zybo-linux-bd.dts
 create mode 100644 recipes-bsp/hardware-definition-file/zybo-linux-bd.bb

diff --git a/conf/machine/zybo-linux-bd-zynq7.conf b/conf/machine/zybo-linux-bd-zynq7.conf
new file mode 100644
index 0000000..7c9c702
--- /dev/null
+++ b/conf/machine/zybo-linux-bd-zynq7.conf
@@ -0,0 +1,30 @@
+#@TYPE: Machine
+#@NAME: zybo-linux-bd-zynq7
+#@DESCRIPTION: Machine support for zybo-linux-bd project.
+#
+# generated base on ZYBO linux-bd project
+#
+
+require conf/machine/include/tune-zynq.inc
+require conf/machine/include/machine-xilinx-default.inc
+require conf/machine/include/machine-xilinx-board.inc
+
+MACHINE_FEATURES = "ext2 vfat usbhost usbgadget keyboard screen alsa sdio"
+SERIAL_CONSOLE = "115200 ttyPS0"
+
+MACHINE_DEVICETREE = " \
+		zybo-linux-bd/pcw.dtsi \
+		zybo-linux-bd/pl.dtsi \
+		zybo-linux-bd/zybo-linux-bd.dts \
+		"
+KERNEL_IMAGETYPE = "zImage"
+
+UBOOT_MACHINE = "zynq_zybo_config"
+SPL_BINARY = "spl/boot.bin"
+
+EXTRA_IMAGEDEPENDS += "virtual/hdf"
+
+IMAGE_BOOT_FILES += "boot.bin \
+		${@bb.utils.contains('IMAGE_FSTYPES', 'xilinx-fitimage', 'fit.itb', 'zybo-linux-bd.dtb', d)} \
+		bitstream \
+		"
diff --git a/recipes-bsp/device-tree/files/zybo-linux-bd/pcw.dtsi b/recipes-bsp/device-tree/files/zybo-linux-bd/pcw.dtsi
new file mode 100644
index 0000000..0f678d3
--- /dev/null
+++ b/recipes-bsp/device-tree/files/zybo-linux-bd/pcw.dtsi
@@ -0,0 +1,63 @@
+/*
+ * CAUTION: This file is automatically generated by Xilinx.
+ * Version: HSI 2015.4
+ * Today is: Fri Mar  4 15:40:49 2016
+*/
+
+
+/ {
+	cpus {
+		cpu at 0 {
+			operating-points = <650000 1000000 325000 1000000>;
+		};
+	};
+};
+&gem0 {
+	phy-mode = "rgmii-id";
+	status = "okay";
+	xlnx,ptp-enet-clock = <0x6750918>;
+};
+&gpio0 {
+	emio-gpio-width = <64>;
+	gpio-mask-high = <0x0>;
+	gpio-mask-low = <0x5600>;
+};
+&i2c0 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+&i2c1 {
+	clock-frequency = <400000>;
+	status = "okay";
+};
+&intc {
+	num_cpus = <2>;
+	num_interrupts = <96>;
+};
+&qspi {
+	is-dual = <0>;
+	num-cs = <1>;
+	status = "okay";
+};
+&sdhci0 {
+	status = "okay";
+	xlnx,has-cd = <0x1>;
+	xlnx,has-power = <0x0>;
+	xlnx,has-wp = <0x1>;
+};
+&uart1 {
+	current-speed = <115200>;
+	device_type = "serial";
+	port-number = <0>;
+	status = "okay";
+};
+&usb0 {
+	dr_mode = "host";
+	phy_type = "ulpi";
+	status = "okay";
+	usb-reset = <&gpio0 46 0>;
+};
+&clkc {
+	fclk-enable = <0x3>;
+	ps-clk-frequency = <50000000>;
+};
diff --git a/recipes-bsp/device-tree/files/zybo-linux-bd/pl.dtsi b/recipes-bsp/device-tree/files/zybo-linux-bd/pl.dtsi
new file mode 100644
index 0000000..0e358e5
--- /dev/null
+++ b/recipes-bsp/device-tree/files/zybo-linux-bd/pl.dtsi
@@ -0,0 +1,213 @@
+/*
+ * CAUTION: This file is automatically generated by Xilinx.
+ * Version: HSI 2015.4
+ * Today is: Fri Mar  4 15:40:49 2016
+*/
+
+
+/ {
+	amba_pl: amba_pl {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "simple-bus";
+		ranges ;
+		axi_dynclk_0: axi_dynclk at 43c10000 {
+			compatible = "xlnx,axi-dynclk-1.0";
+			reg = <0x43c10000 0x10000>;
+			xlnx,s00-axi-addr-width = <0x5>;
+			xlnx,s00-axi-data-width = <0x20>;
+		};
+		axi_gpio_btn: gpio at 41210000 {
+			#gpio-cells = <2>;
+			compatible = "xlnx,xps-gpio-1.00.a";
+			gpio-controller ;
+			reg = <0x41210000 0x10000>;
+			xlnx,all-inputs = <0x1>;
+			xlnx,all-inputs-2 = <0x0>;
+			xlnx,all-outputs = <0x0>;
+			xlnx,all-outputs-2 = <0x0>;
+			xlnx,dout-default = <0x00000000>;
+			xlnx,dout-default-2 = <0x00000000>;
+			xlnx,gpio-width = <0x4>;
+			xlnx,gpio2-width = <0x20>;
+			xlnx,interrupt-present = <0x0>;
+			xlnx,is-dual = <0x0>;
+			xlnx,tri-default = <0xFFFFFFFF>;
+			xlnx,tri-default-2 = <0xFFFFFFFF>;
+		};
+		axi_gpio_hdmi: gpio at 41230000 {
+			#gpio-cells = <2>;
+			compatible = "xlnx,xps-gpio-1.00.a";
+			gpio-controller ;
+			interrupt-parent = <&intc>;
+			interrupts = <0 29 4>;
+			reg = <0x41230000 0x10000>;
+			xlnx,all-inputs = <0x1>;
+			xlnx,all-inputs-2 = <0x0>;
+			xlnx,all-outputs = <0x0>;
+			xlnx,all-outputs-2 = <0x0>;
+			xlnx,dout-default = <0x00000000>;
+			xlnx,dout-default-2 = <0x00000000>;
+			xlnx,gpio-width = <0x1>;
+			xlnx,gpio2-width = <0x20>;
+			xlnx,interrupt-present = <0x1>;
+			xlnx,is-dual = <0x0>;
+			xlnx,tri-default = <0xFFFFFFFF>;
+			xlnx,tri-default-2 = <0xFFFFFFFF>;
+		};
+		axi_gpio_led: gpio at 41200000 {
+			#gpio-cells = <2>;
+			compatible = "xlnx,xps-gpio-1.00.a";
+			gpio-controller ;
+			reg = <0x41200000 0x10000>;
+			xlnx,all-inputs = <0x0>;
+			xlnx,all-inputs-2 = <0x0>;
+			xlnx,all-outputs = <0x1>;
+			xlnx,all-outputs-2 = <0x0>;
+			xlnx,dout-default = <0x00000000>;
+			xlnx,dout-default-2 = <0x00000000>;
+			xlnx,gpio-width = <0x4>;
+			xlnx,gpio2-width = <0x20>;
+			xlnx,interrupt-present = <0x0>;
+			xlnx,is-dual = <0x0>;
+			xlnx,tri-default = <0xFFFFFFFF>;
+			xlnx,tri-default-2 = <0xFFFFFFFF>;
+		};
+		axi_gpio_sw: gpio at 41220000 {
+			#gpio-cells = <2>;
+			compatible = "xlnx,xps-gpio-1.00.a";
+			gpio-controller ;
+			reg = <0x41220000 0x10000>;
+			xlnx,all-inputs = <0x1>;
+			xlnx,all-inputs-2 = <0x0>;
+			xlnx,all-outputs = <0x0>;
+			xlnx,all-outputs-2 = <0x0>;
+			xlnx,dout-default = <0x00000000>;
+			xlnx,dout-default-2 = <0x00000000>;
+			xlnx,gpio-width = <0x4>;
+			xlnx,gpio2-width = <0x20>;
+			xlnx,interrupt-present = <0x0>;
+			xlnx,is-dual = <0x0>;
+			xlnx,tri-default = <0xFFFFFFFF>;
+			xlnx,tri-default-2 = <0xFFFFFFFF>;
+		};
+		axi_i2s_adi_0: axi_i2s_adi at 43c20000 {
+			compatible = "xlnx,axi-i2s-adi-1.0";
+			reg = <0x43c20000 0x10000>;
+			xlnx,bclk-pol = <0x0>;
+			xlnx,dma-type = <0x1>;
+			xlnx,has-rx = <0x1>;
+			xlnx,has-tx = <0x1>;
+			xlnx,lrclk-pol = <0x0>;
+			xlnx,num-ch = <0x1>;
+			xlnx,s-axi-min-size = <0x000001FF>;
+			xlnx,slot-width = <0x18>;
+		};
+		axi_vdma_0: dma at 43000000 {
+			#dma-cells = <1>;
+			compatible = "xlnx,axi-vdma-1.00.a";
+			interrupt-parent = <&intc>;
+			interrupts = <0 30 4>;
+			reg = <0x43000000 0x10000>;
+			xlnx,flush-fsync = <0x1>;
+			xlnx,num-fstores = <0x1>;
+			dma-channel at 43000000 {
+				compatible = "xlnx,axi-vdma-mm2s-channel";
+				interrupts = <0 30 4>;
+				xlnx,datawidth = <0x20>;
+				xlnx,device-id = <0x0>;
+			};
+		};
+		v_tc_0: v_tc at 43c00000 {
+			compatible = "xlnx,v-tc-6.1";
+			interrupt-parent = <&intc>;
+			interrupts = <0 31 4>;
+			reg = <0x43c00000 0x10000>;
+			xlnx,det-achroma-en = <0x0>;
+			xlnx,det-avideo-en = <0x1>;
+			xlnx,det-fieldid-en = <0x0>;
+			xlnx,det-hblank-en = <0x1>;
+			xlnx,det-hsync-en = <0x1>;
+			xlnx,det-vblank-en = <0x1>;
+			xlnx,det-vsync-en = <0x1>;
+			xlnx,detect-en = <0x0>;
+			xlnx,fsync-hstart0 = <0x0>;
+			xlnx,fsync-hstart1 = <0x0>;
+			xlnx,fsync-hstart10 = <0x0>;
+			xlnx,fsync-hstart11 = <0x0>;
+			xlnx,fsync-hstart12 = <0x0>;
+			xlnx,fsync-hstart13 = <0x0>;
+			xlnx,fsync-hstart14 = <0x0>;
+			xlnx,fsync-hstart15 = <0x0>;
+			xlnx,fsync-hstart2 = <0x0>;
+			xlnx,fsync-hstart3 = <0x0>;
+			xlnx,fsync-hstart4 = <0x0>;
+			xlnx,fsync-hstart5 = <0x0>;
+			xlnx,fsync-hstart6 = <0x0>;
+			xlnx,fsync-hstart7 = <0x0>;
+			xlnx,fsync-hstart8 = <0x0>;
+			xlnx,fsync-hstart9 = <0x0>;
+			xlnx,fsync-vstart0 = <0x0>;
+			xlnx,fsync-vstart1 = <0x0>;
+			xlnx,fsync-vstart10 = <0x0>;
+			xlnx,fsync-vstart11 = <0x0>;
+			xlnx,fsync-vstart12 = <0x0>;
+			xlnx,fsync-vstart13 = <0x0>;
+			xlnx,fsync-vstart14 = <0x0>;
+			xlnx,fsync-vstart15 = <0x0>;
+			xlnx,fsync-vstart2 = <0x0>;
+			xlnx,fsync-vstart3 = <0x0>;
+			xlnx,fsync-vstart4 = <0x0>;
+			xlnx,fsync-vstart5 = <0x0>;
+			xlnx,fsync-vstart6 = <0x0>;
+			xlnx,fsync-vstart7 = <0x0>;
+			xlnx,fsync-vstart8 = <0x0>;
+			xlnx,fsync-vstart9 = <0x0>;
+			xlnx,gen-achroma-en = <0x0>;
+			xlnx,gen-achroma-polarity = <0x1>;
+			xlnx,gen-auto-switch = <0x0>;
+			xlnx,gen-avideo-en = <0x1>;
+			xlnx,gen-avideo-polarity = <0x1>;
+			xlnx,gen-cparity = <0x0>;
+			xlnx,gen-f0-vblank-hend = <0x500>;
+			xlnx,gen-f0-vblank-hstart = <0x500>;
+			xlnx,gen-f0-vframe-size = <0x2ee>;
+			xlnx,gen-f0-vsync-hend = <0x500>;
+			xlnx,gen-f0-vsync-hstart = <0x500>;
+			xlnx,gen-f0-vsync-vend = <0x2d9>;
+			xlnx,gen-f0-vsync-vstart = <0x2d4>;
+			xlnx,gen-f1-vblank-hend = <0x500>;
+			xlnx,gen-f1-vblank-hstart = <0x500>;
+			xlnx,gen-f1-vframe-size = <0x2ee>;
+			xlnx,gen-f1-vsync-hend = <0x500>;
+			xlnx,gen-f1-vsync-hstart = <0x500>;
+			xlnx,gen-f1-vsync-vend = <0x2d9>;
+			xlnx,gen-f1-vsync-vstart = <0x2d4>;
+			xlnx,gen-fieldid-en = <0x0>;
+			xlnx,gen-fieldid-polarity = <0x1>;
+			xlnx,gen-hactive-size = <0x500>;
+			xlnx,gen-hblank-en = <0x1>;
+			xlnx,gen-hblank-polarity = <0x1>;
+			xlnx,gen-hframe-size = <0x672>;
+			xlnx,gen-hsync-en = <0x1>;
+			xlnx,gen-hsync-end = <0x596>;
+			xlnx,gen-hsync-polarity = <0x1>;
+			xlnx,gen-hsync-start = <0x56e>;
+			xlnx,gen-interlaced = <0x0>;
+			xlnx,gen-vactive-size = <0x2d0>;
+			xlnx,gen-vblank-en = <0x1>;
+			xlnx,gen-vblank-polarity = <0x1>;
+			xlnx,gen-video-format = <0x2>;
+			xlnx,gen-vsync-en = <0x1>;
+			xlnx,gen-vsync-polarity = <0x1>;
+			xlnx,generate-en = <0x1>;
+			xlnx,has-axi4-lite = <0x1>;
+			xlnx,has-intc-if = <0x0>;
+			xlnx,interlace-en = <0x0>;
+			xlnx,max-lines = <0x1000>;
+			xlnx,max-pixels = <0x1000>;
+			xlnx,num-fsyncs = <0x1>;
+			xlnx,sync-en = <0x0>;
+		};
+	};
+};
diff --git a/recipes-bsp/device-tree/files/zybo-linux-bd/zybo-linux-bd.dts b/recipes-bsp/device-tree/files/zybo-linux-bd/zybo-linux-bd.dts
new file mode 100644
index 0000000..a08959e
--- /dev/null
+++ b/recipes-bsp/device-tree/files/zybo-linux-bd/zybo-linux-bd.dts
@@ -0,0 +1,185 @@
+/dts-v1/;
+/include/ "skeleton.dtsi"
+/include/ "zynq-7000.dtsi"
+/include/ "pcw.dtsi"
+/include/ "pl.dtsi"
+
+/ {
+	model = "Digilent-Zybo-Linux-BD-v2015.4";
+	aliases {
+		serial0 = &uart1;
+		ethernet0 = &gem0;
+		spi0 = &qspi;
+	};
+	chosen {
+		bootargs = "console=ttyPS0,115200 earlyprintk";
+	};
+	memory {
+		device_type = "memory";
+		reg = <0x0 0x20000000>;
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		autorepeat;
+		btn4 {
+			label = "btn4";
+			gpios = <&gpio0 50 0>;
+			linux,code = <108>; /* down */
+			gpio-key,wakeup;
+			autorepeat;
+		};
+		btn5 {
+			label = "btn5";
+			gpios = <&gpio0 51 0>;
+			linux,code = <103>; /* up */
+			gpio-key,wakeup;
+			autorepeat;
+		};
+	};
+
+	usb_phy0: usb_phy at 0 {
+		compatible = "usb-nop-xceiv";
+		#phy-cells = <0>;
+		reset-gpios = <&gpio0 46 1>;
+	};
+};
+
+&amba {
+	u-boot,dm-pre-reloc;
+};
+
+&amba_pl {
+	encoder_0: digilent_encoder {
+		compatible = "digilent,drm-encoder";
+		dglnt,edid-i2c = <&i2c1>;
+	};
+
+	xilinx_drm {
+		compatible = "xlnx,drm";
+		xlnx,vtc = <&v_tc_0>;
+		xlnx,connector-type = "HDMIA";
+		xlnx,encoder-slave = <&encoder_0>;
+		clocks = <&axi_dynclk_0>;
+		planes {
+			xlnx,pixel-format = "xrgb8888";
+			plane0 {
+				dmas = <&axi_vdma_0 0>;
+				dma-names = "dma";
+			};
+		};
+	};
+
+	i2s_clk: i2s_clk {
+		#clock-cells = <0>;
+		compatible = "fixed-clock";
+		clock-frequency = <12288000>;
+		clock-output-names = "i2s_clk";
+	};
+
+	sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "ZYBO-Sound-Card";
+		simple-audio-card,format = "i2s";
+		simple-audio-card,bitclock-master = <&dailink0_master>;
+		simple-audio-card,frame-master = <&dailink0_master>;
+		simple-audio-card,widgets =
+			"Microphone", "Microphone Jack",
+			"Headphone", "Headphone Jack",
+			"Line", "Line In Jack";
+		simple-audio-card,routing =
+			"MICIN", "Microphone Jack",
+			"Headphone Jack", "LHPOUT",
+			"Headphone Jack", "RHPOUT",
+			"LLINEIN", "Line In Jack",
+			"RLINEIN", "Line In Jack";
+		dailink0_master: simple-audio-card,cpu {
+			clocks = <&i2s_clk>;
+			sound-dai = <&axi_i2s_adi_0>;
+		};
+		simple-audio-card,codec {
+			clocks = <&i2s_clk>;
+			sound-dai = <&ssm2603>;
+		};
+	};
+};
+
+&axi_dynclk_0 {
+	compatible = "digilent,axi-dynclk";
+	#clock-cells = <0>;
+	clocks = <&clkc 15>;
+};
+
+&axi_i2s_adi_0 {
+	#sound-dai-cells = <0>;
+	compatible = "adi,axi-i2s-1.00.a";
+	clocks = <&clkc 15>, <&i2s_clk>;
+	clock-names = "axi", "ref";
+	dmas = <&dmac_s 0 &dmac_s 1>;
+	dma-names = "tx", "rx";
+};
+
+&gem0 {
+	phy-handle = <&phy0>;
+	phy-mode = "rgmii-id";
+	local-mac-address = [];
+	gem0_mdio: mdio {
+		phy0: phy at 1 {
+			compatible = "realtek,RTL8211E";
+			device_type = "ethernet-phy";
+			reg = <1>;
+		};
+	};
+};
+
+&i2c0 {
+	eeprom at 50 {
+		/* Microchip 24AA02E48 */
+		compatible = "microchip,24c02";
+		reg = <0x50>;
+	};
+
+	ssm2603: ssm2603 at 1a{
+		#sound-dai-cells = <0>;
+		compatible = "adi,ssm2603";
+		reg = <0x1a>;
+	};
+};
+
+&qspi {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	flash0: flash at 0 {
+		compatible = "micron,m25p80", "s25fl128s";
+		reg = <0x0>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		spi-max-frequency = <50000000>;
+		partition at 0x00000000 {
+			label = "boot";
+			reg = <0x00000000 0x00300000>;
+		};
+		partition at 0x00300000 {
+			label = "bootenv";
+			reg = <0x00300000 0x00020000>;
+		};
+		partition at 0x00320000 {
+			label = "kernel";
+			reg = <0x00320000 0x00a80000>;
+		};
+		partition at 0x00da0000 {
+			label = "spare";
+			reg = <0x00da0000 0x00000000>;
+		};
+	};
+};
+
+&usb0 {
+	usb-phy = <&usb_phy0>;
+};
+
+&v_tc_0 {
+	compatible = "xlnx,v-tc-5.01.a";
+};
\ No newline at end of file
diff --git a/recipes-bsp/hardware-definition-file/zybo-linux-bd.bb b/recipes-bsp/hardware-definition-file/zybo-linux-bd.bb
new file mode 100644
index 0000000..4eda840
--- /dev/null
+++ b/recipes-bsp/hardware-definition-file/zybo-linux-bd.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Xilinx Hardware Definition File for zybo-linux-bd"
+DESCRIPTION = "Contains the Reference Design Files and hardware software hand-off files."
+SECTION = "bsp"
+DEPENDS += "unzip"
+
+include hdf.inc
+
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://Projects/${HW_BD}/readme.txt;md5=e1cb7639bf00b6e730ff3a7f13714951"
+
+COMPATIBLE_MACHINE = "zybo-linux-bd-zynq7"
+
+HW_BD = "linux_bd"
+
+SRC_URI := "git://github.com/Digilent/ZYBO.git;protocol=https;nobranch=1"
+SRCREV = "63ca49fe027da49f3b0ac636bd404fd31fbbd945"
+
+PV = "+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+HDF = "/Projects/${HW_BD}/hw_handoff/${HW_BD}_wrapper.hdf"
-- 
1.9.1




More information about the meta-xilinx mailing list