All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board
@ 2017-09-12 18:05 Tom McLeod
  2017-09-25 20:24 ` Tom McLeod
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Tom McLeod @ 2017-09-12 18:05 UTC (permalink / raw)
  To: u-boot

Add the Zynq-based SYZYGY Hub board from Opal Kelly. The board
contains a Xilinx Zynq xc7z012s SoC, 1GB DDR3 RAM, and supports
booting from SD.

Signed-off-by: Tom McLeod <tom.mcleod@opalkelly.com>
---
 arch/arm/dts/Makefile                              |    1 +
 arch/arm/dts/zynq-syzygy-hub.dts                   |   72 ++
 board/opalkelly/zynq/MAINTAINERS                   |    6 +
 board/opalkelly/zynq/Makefile                      |    9 +
 board/opalkelly/zynq/board.c                       |    1 +
 .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c  | 1078 ++++++++++++++++++++
 .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h  |  103 ++
 configs/syzygy_hub_defconfig                       |   57 ++
 include/configs/syzygy_hub.h                       |   72 ++
 9 files changed, 1399 insertions(+)
 create mode 100644 arch/arm/dts/zynq-syzygy-hub.dts
 create mode 100644 board/opalkelly/zynq/MAINTAINERS
 create mode 100644 board/opalkelly/zynq/Makefile
 create mode 100644 board/opalkelly/zynq/board.c
 create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
 create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
 create mode 100644 configs/syzygy_hub_defconfig
 create mode 100644 include/configs/syzygy_hub.h

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 1d6cee2..c15d94f 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -126,6 +126,7 @@ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
 	zynq-zc706.dtb \
 	zynq-zed.dtb \
 	zynq-zybo.dtb \
+	zynq-syzygy-hub.dtb \
 	zynq-microzed.dtb \
 	zynq-picozed.dtb \
 	zynq-topic-miami.dtb \
diff --git a/arch/arm/dts/zynq-syzygy-hub.dts b/arch/arm/dts/zynq-syzygy-hub.dts
new file mode 100644
index 0000000..c98ef01
--- /dev/null
+++ b/arch/arm/dts/zynq-syzygy-hub.dts
@@ -0,0 +1,72 @@
+/*
+ * SYZYGY Hub DTS
+ *
+ *  Copyright (C) 2011 - 2015 Xilinx
+ *  Copyright (C) 2017 Opal Kelly Inc.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+/dts-v1/;
+/include/ "zynq-7000.dtsi"
+
+/ {
+	model = "SYZYGY Hub";
+	compatible = "xlnx,zynq-7000";
+
+	aliases {
+		ethernet0 = &gem0;
+		serial0 = &uart0;
+		mmc0 = &sdhci0;
+	};
+
+	memory at 0 {
+		device_type = "memory";
+		reg = <0x0 0x40000000>;
+	};
+
+	chosen {
+		bootargs = "";
+		stdout-path = "serial0:115200n8";
+	};
+
+	usb_phy0: phy0 {
+		#phy-cells = <0>;
+		compatible = "usb-nop-xceiv";
+		reset-gpios = <&gpio0 47 1>;
+	};
+};
+
+&clkc {
+	ps-clk-frequency = <50000000>;
+};
+
+&gem0 {
+	status = "okay";
+	phy-mode = "rgmii-id";
+	phy-handle = <&ethernet_phy>;
+
+	ethernet_phy: ethernet-phy at 0 {
+		reg = <0>;
+		device_type = "ethernet-phy";
+	};
+};
+
+&i2c1 {
+	status = "okay";
+};
+
+&sdhci0 {
+	u-boot,dm-pre-reloc;
+	status = "okay";
+};
+
+&uart0 {
+	u-boot,dm-pre-reloc;
+	status = "okay";
+};
+
+&usb0 {
+	status = "okay";
+	dr_mode = "otg";
+	usb-phy = <&usb_phy0>;
+};
diff --git a/board/opalkelly/zynq/MAINTAINERS b/board/opalkelly/zynq/MAINTAINERS
new file mode 100644
index 0000000..df4b9b6
--- /dev/null
+++ b/board/opalkelly/zynq/MAINTAINERS
@@ -0,0 +1,6 @@
+ZYNQ BOARD
+M:	Tom McLeod <tom.mcleod@opalkelly.com>
+S:	Maintained
+F:	board/opalkelly/zynq/
+F:	include/configs/syzygy_hub.h
+F:	configs/syzygy_hub_defconfig
diff --git a/board/opalkelly/zynq/Makefile b/board/opalkelly/zynq/Makefile
new file mode 100644
index 0000000..09fc788
--- /dev/null
+++ b/board/opalkelly/zynq/Makefile
@@ -0,0 +1,9 @@
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	:= board.o
+
+hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE))
+
+obj-$(CONFIG_SPL_BUILD) += $(hw-platform-y)/ps7_init_gpl.o
diff --git a/board/opalkelly/zynq/board.c b/board/opalkelly/zynq/board.c
new file mode 100644
index 0000000..a95c9d1
--- /dev/null
+++ b/board/opalkelly/zynq/board.c
@@ -0,0 +1 @@
+#include "../../xilinx/zynq/board.c"
diff --git a/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
new file mode 100644
index 0000000..2b111d0
--- /dev/null
+++ b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
@@ -0,0 +1,1078 @@
+/******************************************************************************
+* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
+*
+*
+* SPDX-License-Identifier: GPL-2.0+
+ *****************************************************************************/
+
+#include "ps7_init_gpl.h"
+
+unsigned long ps7_pll_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x001772C0U),
+	EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x0001A000U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U),
+	EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x001DB2C0U),
+	EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00015000U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000002U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U),
+	EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001F42C0U),
+	EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x00014000U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000004U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_clock_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00203401U),
+	EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U),
+	EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00400500U),
+	EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01DC044DU),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_ddr_init_data_3_0[] = {
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006004, 0x0007FFFFU, 0x00001081U),
+	EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU),
+	EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U),
+	EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U),
+	EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU),
+	EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U),
+	EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U),
+	EMIT_MASKWRITE(0XF8006020, 0x7FDFFFFCU, 0x270872D0U),
+	EMIT_MASKWRITE(0XF8006024, 0x0FFFFFC3U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U),
+	EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U),
+	EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U),
+	EMIT_MASKWRITE(0XF8006038, 0x00000003U, 0x00000000U),
+	EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U),
+	EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U),
+	EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U),
+	EMIT_MASKWRITE(0XF8006048, 0x0003F03FU, 0x0003C008U),
+	EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U),
+	EMIT_MASKWRITE(0XF8006058, 0x00010000U, 0x00000000U),
+	EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U),
+	EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU),
+	EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U),
+	EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U),
+	EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U),
+	EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU, 0x00466111U),
+	EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU, 0x00032222U),
+	EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U),
+	EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
+	EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU),
+	EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
+	EMIT_MASKWRITE(0XF80060B4, 0x00000200U, 0x00000200U),
+	EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U),
+	EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006118, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800611C, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006120, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006124, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006190, 0x6FFFFEFEU, 0x00040080U),
+	EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U),
+	EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006208, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF800620C, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006210, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006214, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF80062A8, 0x00000FF5U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U),
+	EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U),
+	EMIT_MASKPOLL(0XF8000B74, 0x00002000U),
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U),
+	EMIT_MASKPOLL(0XF8006054, 0x00000007U),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_mio_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
+	EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU, 0x00000260U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U),
+	EMIT_MASKWRITE(0XF8000B70, 0x07FEFFFFU, 0x00000823U),
+	EMIT_MASKWRITE(0XF8000700, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000704, 0x00003FFFU, 0x00001602U),
+	EMIT_MASKWRITE(0XF8000708, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800070C, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000710, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000714, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000718, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800071C, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000720, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000724, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000728, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF800072C, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000730, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000734, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000738, 0x00003FFFU, 0x000016E1U),
+	EMIT_MASKWRITE(0XF800073C, 0x00003FFFU, 0x000016E0U),
+	EMIT_MASKWRITE(0XF8000740, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000744, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000748, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF800074C, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000750, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000754, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000758, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800075C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000760, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000764, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000768, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800076C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000770, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000774, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000778, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800077C, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000780, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000784, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000788, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800078C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000790, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000794, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000798, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800079C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B8, 0x00003F01U, 0x00001201U),
+	EMIT_MASKWRITE(0XF80007BC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF8000830, 0x003F003FU, 0x002E0037U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_peripherals_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_MASKWRITE(0XE0000034, 0x000000FFU, 0x00000006U),
+	EMIT_MASKWRITE(0XE0000018, 0x0000FFFFU, 0x0000007CU),
+	EMIT_MASKWRITE(0XE0000000, 0x000001FFU, 0x00000017U),
+	EMIT_MASKWRITE(0XE0000004, 0x000003FFU, 0x00000020U),
+	EMIT_MASKWRITE(0XE000D000, 0x00080000U, 0x00080000U),
+	EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF0000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_post_config_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU),
+	EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_debug_3_0[] = {
+	EMIT_WRITE(0XF8898FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8899FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8809FB0, 0xC5ACCE55U),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_pll_init_data_2_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x001772C0U),
+	EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x0001A000U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U),
+	EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x001DB2C0U),
+	EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00015000U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000002U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U),
+	EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001F42C0U),
+	EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x00014000U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000004U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_clock_init_data_2_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00203401U),
+	EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U),
+	EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00400500U),
+	EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01DC044DU),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_ddr_init_data_2_0[] = {
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006004, 0x1FFFFFFFU, 0x00081081U),
+	EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU),
+	EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U),
+	EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U),
+	EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU),
+	EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U),
+	EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U),
+	EMIT_MASKWRITE(0XF8006020, 0xFFFFFFFCU, 0x272872D0U),
+	EMIT_MASKWRITE(0XF8006024, 0x0FFFFFFFU, 0x0000003CU),
+	EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U),
+	EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U),
+	EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U),
+	EMIT_MASKWRITE(0XF8006038, 0x00001FC3U, 0x00000000U),
+	EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U),
+	EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U),
+	EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U),
+	EMIT_MASKWRITE(0XF8006048, 0x3FFFFFFFU, 0x0003C248U),
+	EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U),
+	EMIT_MASKWRITE(0XF8006058, 0x0001FFFFU, 0x00000101U),
+	EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U),
+	EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU),
+	EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U),
+	EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U),
+	EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U),
+	EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU, 0x00466111U),
+	EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU, 0x00032222U),
+	EMIT_MASKWRITE(0XF80060A0, 0x00FFFFFFU, 0x00008000U),
+	EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U),
+	EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
+	EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU),
+	EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
+	EMIT_MASKWRITE(0XF80060B4, 0x000007FFU, 0x00000200U),
+	EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U),
+	EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006118, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800611C, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006120, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006124, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006190, 0xFFFFFFFFU, 0x10040080U),
+	EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U),
+	EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006208, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF800620C, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF8006210, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF8006214, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF80062A8, 0x00000FF7U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U),
+	EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U),
+	EMIT_MASKPOLL(0XF8000B74, 0x00002000U),
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U),
+	EMIT_MASKPOLL(0XF8006054, 0x00000007U),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_mio_init_data_2_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
+	EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU, 0x00000260U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000021U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U),
+	EMIT_MASKWRITE(0XF8000B70, 0x07FFFFFFU, 0x00000823U),
+	EMIT_MASKWRITE(0XF8000700, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000704, 0x00003FFFU, 0x00001602U),
+	EMIT_MASKWRITE(0XF8000708, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800070C, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000710, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000714, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000718, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800071C, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000720, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000724, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000728, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF800072C, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000730, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000734, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000738, 0x00003FFFU, 0x000016E1U),
+	EMIT_MASKWRITE(0XF800073C, 0x00003FFFU, 0x000016E0U),
+	EMIT_MASKWRITE(0XF8000740, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000744, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000748, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF800074C, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000750, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000754, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000758, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800075C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000760, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000764, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000768, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800076C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000770, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000774, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000778, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800077C, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000780, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000784, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000788, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800078C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000790, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000794, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000798, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800079C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B8, 0x00003F01U, 0x00001201U),
+	EMIT_MASKWRITE(0XF80007BC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF8000830, 0x003F003FU, 0x002E0037U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_peripherals_init_data_2_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_MASKWRITE(0XE0000034, 0x000000FFU, 0x00000006U),
+	EMIT_MASKWRITE(0XE0000018, 0x0000FFFFU, 0x0000007CU),
+	EMIT_MASKWRITE(0XE0000000, 0x000001FFU, 0x00000017U),
+	EMIT_MASKWRITE(0XE0000004, 0x00000FFFU, 0x00000020U),
+	EMIT_MASKWRITE(0XE000D000, 0x00080000U, 0x00080000U),
+	EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF0000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_post_config_2_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU),
+	EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_debug_2_0[] = {
+	EMIT_WRITE(0XF8898FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8899FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8809FB0, 0xC5ACCE55U),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_pll_init_data_1_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x001772C0U),
+	EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x0001A000U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U),
+	EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x001DB2C0U),
+	EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00015000U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000002U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U),
+	EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001F42C0U),
+	EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x00014000U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000004U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_clock_init_data_1_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00203401U),
+	EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U),
+	EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00400500U),
+	EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01DC044DU),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_ddr_init_data_1_0[] = {
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006004, 0x1FFFFFFFU, 0x00081081U),
+	EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU),
+	EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U),
+	EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U),
+	EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU),
+	EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U),
+	EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U),
+	EMIT_MASKWRITE(0XF8006020, 0xFFFFFFFCU, 0x272872D0U),
+	EMIT_MASKWRITE(0XF8006024, 0x0FFFFFFFU, 0x0000003CU),
+	EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U),
+	EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U),
+	EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U),
+	EMIT_MASKWRITE(0XF8006038, 0x00001FC3U, 0x00000000U),
+	EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U),
+	EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U),
+	EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U),
+	EMIT_MASKWRITE(0XF8006048, 0x3FFFFFFFU, 0x0003C248U),
+	EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U),
+	EMIT_MASKWRITE(0XF8006058, 0x0001FFFFU, 0x00000101U),
+	EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U),
+	EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU),
+	EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U),
+	EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U),
+	EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U),
+	EMIT_MASKWRITE(0XF80060A0, 0x00FFFFFFU, 0x00008000U),
+	EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U),
+	EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
+	EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU),
+	EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
+	EMIT_MASKWRITE(0XF80060B4, 0x000007FFU, 0x00000200U),
+	EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U),
+	EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006118, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800611C, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006120, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006124, 0x7FFFFFFFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006190, 0xFFFFFFFFU, 0x10040080U),
+	EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U),
+	EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006208, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF800620C, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF8006210, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF8006214, 0x000F03FFU, 0x000803FFU),
+	EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF80062A8, 0x00000FF7U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U),
+	EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U),
+	EMIT_MASKPOLL(0XF8000B74, 0x00002000U),
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U),
+	EMIT_MASKPOLL(0XF8006054, 0x00000007U),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_mio_init_data_1_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
+	EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B6C, 0x000073FFU, 0x00000260U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000021U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U),
+	EMIT_MASKWRITE(0XF8000B70, 0x07FFFFFFU, 0x00000823U),
+	EMIT_MASKWRITE(0XF8000700, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000704, 0x00003FFFU, 0x00001602U),
+	EMIT_MASKWRITE(0XF8000708, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800070C, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000710, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000714, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000718, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800071C, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000720, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000724, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000728, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF800072C, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000730, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000734, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000738, 0x00003FFFU, 0x000016E1U),
+	EMIT_MASKWRITE(0XF800073C, 0x00003FFFU, 0x000016E0U),
+	EMIT_MASKWRITE(0XF8000740, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000744, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000748, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF800074C, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000750, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000754, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000758, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800075C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000760, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000764, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000768, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800076C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000770, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000774, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000778, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800077C, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000780, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000784, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000788, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800078C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000790, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000794, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000798, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800079C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B8, 0x00003F01U, 0x00001201U),
+	EMIT_MASKWRITE(0XF80007BC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF8000830, 0x003F003FU, 0x002E0037U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_peripherals_init_data_1_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_MASKWRITE(0XE0000034, 0x000000FFU, 0x00000006U),
+	EMIT_MASKWRITE(0XE0000018, 0x0000FFFFU, 0x0000007CU),
+	EMIT_MASKWRITE(0XE0000000, 0x000001FFU, 0x00000017U),
+	EMIT_MASKWRITE(0XE0000004, 0x00000FFFU, 0x00000020U),
+	EMIT_MASKWRITE(0XE000D000, 0x00080000U, 0x00080000U),
+	EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF0000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_post_config_1_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU),
+	EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+
+};
+
+unsigned long ps7_debug_1_0[] = {
+	EMIT_WRITE(0XF8898FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8899FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8809FB0, 0xC5ACCE55U),
+	EMIT_EXIT(),
+
+};
+
+#define PS7_MASK_POLL_TIME 100000000
+
+char *getPS7MessageInfo(unsigned key)
+{
+	char *err_msg = "";
+
+	switch (key) {
+	case PS7_INIT_SUCCESS:
+		err_msg = "PS7 initialization successful";
+		break;
+	case PS7_INIT_CORRUPT:
+		err_msg = "PS7 init Data Corrupted";
+		break;
+	case PS7_INIT_TIMEOUT:
+		err_msg = "PS7 init mask poll timeout";
+		break;
+	case PS7_POLL_FAILED_DDR_INIT:
+		err_msg = "Mask Poll failed for DDR Init";
+		break;
+	case PS7_POLL_FAILED_DMA:
+		err_msg = "Mask Poll failed for PLL Init";
+		break;
+	case PS7_POLL_FAILED_PLL:
+		err_msg = "Mask Poll failed for DMA done bit";
+		break;
+	default:
+		err_msg = "Undefined error status";
+		break;
+	}
+
+	return err_msg;
+}
+
+unsigned long ps7GetSiliconVersion(void)
+{
+	unsigned long mask = 0xF0000000;
+	unsigned long *addr = (unsigned long *)0XF8007080;
+	unsigned long ps_version = (*addr & mask) >> 28;
+
+	return ps_version;
+}
+
+void mask_write(unsigned long add, unsigned long mask, unsigned long val)
+{
+	volatile unsigned long *addr = (volatile unsigned long *)add;
+
+	*addr = (val & mask) | (*addr & ~mask);
+}
+
+int mask_poll(unsigned long add, unsigned long mask)
+{
+	volatile unsigned long *addr = (volatile unsigned long *)add;
+	int i = 0;
+
+	while (!(*addr & mask)) {
+		if (i == PS7_MASK_POLL_TIME)
+			return -1;
+		i++;
+	}
+	return 1;
+}
+
+unsigned long mask_read(unsigned long add, unsigned long mask)
+{
+	volatile unsigned long *addr = (volatile unsigned long *)add;
+	unsigned long val = (*addr & mask);
+
+	return val;
+}
+
+int ps7_config(unsigned long *ps7_config_init)
+{
+	unsigned long *ptr = ps7_config_init;
+
+	unsigned long opcode;	/* current instruction .. */
+	unsigned long args[16];	/* no opcode has so many args ... */
+	int numargs;		/* number of arguments of this instruction */
+	int j;			/* general purpose index */
+
+	volatile unsigned long *addr;	/* some variable to make code readable */
+	unsigned long val, mask;	/* some variable to make code readable */
+
+	int finish = -1;	/* loop while this is negative ! */
+	int i = 0;		/* Timeout variable */
+
+	while (finish < 0) {
+		numargs = ptr[0] & 0xF;
+		opcode = ptr[0] >> 4;
+
+		for (j = 0; j < numargs; j++)
+			args[j] = ptr[j + 1];
+		ptr += numargs + 1;
+
+		switch (opcode) {
+		case OPCODE_EXIT:
+			finish = PS7_INIT_SUCCESS;
+			break;
+
+		case OPCODE_CLEAR:
+			addr = (unsigned long *)args[0];
+			*addr = 0;
+			break;
+
+		case OPCODE_WRITE:
+			addr = (unsigned long *)args[0];
+			val = args[1];
+			*addr = val;
+			break;
+
+		case OPCODE_MASKWRITE:
+			addr = (unsigned long *)args[0];
+			mask = args[1];
+			val = args[2];
+			*addr = (val & mask) | (*addr & ~mask);
+			break;
+
+		case OPCODE_MASKPOLL:
+			addr = (unsigned long *)args[0];
+			mask = args[1];
+			i = 0;
+			while (!(*addr & mask)) {
+				if (i == PS7_MASK_POLL_TIME) {
+					finish = PS7_INIT_TIMEOUT;
+					break;
+				}
+				i++;
+			}
+			break;
+		case OPCODE_MASKDELAY:
+			addr = (unsigned long *)args[0];
+			mask = args[1];
+			int delay = get_number_of_cycles_for_delay(mask);
+			perf_reset_and_start_timer();
+			while ((*addr < delay))
+				;
+			break;
+		default:
+			finish = PS7_INIT_CORRUPT;
+			break;
+		}
+	}
+	return finish;
+}
+
+unsigned long *ps7_mio_init_data = ps7_mio_init_data_3_0;
+unsigned long *ps7_pll_init_data = ps7_pll_init_data_3_0;
+unsigned long *ps7_clock_init_data = ps7_clock_init_data_3_0;
+unsigned long *ps7_ddr_init_data = ps7_ddr_init_data_3_0;
+unsigned long *ps7_peripherals_init_data = ps7_peripherals_init_data_3_0;
+
+int ps7_post_config(void)
+{
+	unsigned long si_ver = ps7GetSiliconVersion();
+	int ret = -1;
+
+	if (si_ver == PCW_SILICON_VERSION_1) {
+		ret = ps7_config(ps7_post_config_1_0);
+		if (ret != PS7_INIT_SUCCESS)
+			return ret;
+	} else if (si_ver == PCW_SILICON_VERSION_2) {
+		ret = ps7_config(ps7_post_config_2_0);
+		if (ret != PS7_INIT_SUCCESS)
+			return ret;
+	} else {
+		ret = ps7_config(ps7_post_config_3_0);
+		if (ret != PS7_INIT_SUCCESS)
+			return ret;
+	}
+	return PS7_INIT_SUCCESS;
+}
+
+int ps7_debug(void)
+{
+	unsigned long si_ver = ps7GetSiliconVersion();
+	int ret = -1;
+
+	if (si_ver == PCW_SILICON_VERSION_1) {
+		ret = ps7_config(ps7_debug_1_0);
+		if (ret != PS7_INIT_SUCCESS)
+			return ret;
+	} else if (si_ver == PCW_SILICON_VERSION_2) {
+		ret = ps7_config(ps7_debug_2_0);
+		if (ret != PS7_INIT_SUCCESS)
+			return ret;
+	} else {
+		ret = ps7_config(ps7_debug_3_0);
+		if (ret != PS7_INIT_SUCCESS)
+			return ret;
+	}
+	return PS7_INIT_SUCCESS;
+}
+
+int ps7_reset_apu(void)
+{
+	mask_write(0xF8000244, 0x00000022U, 0x00000022U);
+	return PS7_INIT_SUCCESS;
+}
+
+int ps7_init(void)
+{
+	unsigned long si_ver = ps7GetSiliconVersion();
+	int ret;
+
+
+	ret = ps7_reset_apu();
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	if (si_ver == PCW_SILICON_VERSION_1) {
+		ps7_mio_init_data = ps7_mio_init_data_1_0;
+		ps7_pll_init_data = ps7_pll_init_data_1_0;
+		ps7_clock_init_data = ps7_clock_init_data_1_0;
+		ps7_ddr_init_data = ps7_ddr_init_data_1_0;
+		ps7_peripherals_init_data = ps7_peripherals_init_data_1_0;
+	} else if (si_ver == PCW_SILICON_VERSION_2) {
+		ps7_mio_init_data = ps7_mio_init_data_2_0;
+		ps7_pll_init_data = ps7_pll_init_data_2_0;
+		ps7_clock_init_data = ps7_clock_init_data_2_0;
+		ps7_ddr_init_data = ps7_ddr_init_data_2_0;
+		ps7_peripherals_init_data = ps7_peripherals_init_data_2_0;
+	} else {
+		ps7_mio_init_data = ps7_mio_init_data_3_0;
+		ps7_pll_init_data = ps7_pll_init_data_3_0;
+		ps7_clock_init_data = ps7_clock_init_data_3_0;
+		ps7_ddr_init_data = ps7_ddr_init_data_3_0;
+		ps7_peripherals_init_data = ps7_peripherals_init_data_3_0;
+	}
+
+	ret = ps7_config(ps7_mio_init_data);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_pll_init_data);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_clock_init_data);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_ddr_init_data);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_peripherals_init_data);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+	return PS7_INIT_SUCCESS;
+}
+
+/* For delay calculation using global timer */
+
+/* start timer */
+void perf_start_clock(void)
+{
+	*(volatile unsigned int *)SCU_GLOBAL_TIMER_CONTROL = ((1 << 0) |	/* Timer Enable */
+							      (1 << 3) |	/* Auto-increment */
+							      (0 << 8)	/* Pre-scale */
+	    );
+}
+
+/* stop timer and reset timer count regs */
+void perf_reset_clock(void)
+{
+	perf_disable_clock();
+	*(volatile unsigned int *)SCU_GLOBAL_TIMER_COUNT_L32 = 0;
+	*(volatile unsigned int *)SCU_GLOBAL_TIMER_COUNT_U32 = 0;
+}
+
+/* Compute mask for given delay in miliseconds*/
+int get_number_of_cycles_for_delay(unsigned int delay)
+{
+	return APU_FREQ * delay / (2 * 1000);
+}
+
+/* stop timer */
+void perf_disable_clock(void)
+{
+	*(volatile unsigned int *)SCU_GLOBAL_TIMER_CONTROL = 0;
+}
+
+void perf_reset_and_start_timer(void)
+{
+	perf_reset_clock();
+	perf_start_clock();
+}
diff --git a/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
new file mode 100644
index 0000000..6f486d1
--- /dev/null
+++ b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
@@ -0,0 +1,103 @@
+/******************************************************************************
+*
+* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
+*
+* SPDX-License-Identifier: GPL-2.0+
+*****************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+
+/** do we need to make this name more unique ? **/
+extern unsigned long  *ps7_ddr_init_data;
+extern unsigned long  *ps7_mio_init_data;
+extern unsigned long  *ps7_pll_init_data;
+extern unsigned long  *ps7_clock_init_data;
+extern unsigned long  *ps7_peripherals_init_data;
+
+
+
+#define OPCODE_EXIT       0U
+#define OPCODE_CLEAR      1U
+#define OPCODE_WRITE      2U
+#define OPCODE_MASKWRITE  3U
+#define OPCODE_MASKPOLL   4U
+#define OPCODE_MASKDELAY  5U
+#define NEW_PS7_ERR_CODE 1
+
+/* Encode number of arguments in last nibble */
+#define EMIT_EXIT()                   ((OPCODE_EXIT      << 4) | 0)
+#define EMIT_CLEAR(addr)              ((OPCODE_CLEAR     << 4) | 1) , addr
+#define EMIT_WRITE(addr, val)          ((OPCODE_WRITE     << 4) | 2) , addr, val
+#define EMIT_MASKWRITE(addr, mask, val) ((OPCODE_MASKWRITE << 4) | 3) , addr, mask, val
+#define EMIT_MASKPOLL(addr, mask)      ((OPCODE_MASKPOLL  << 4) | 2) , addr, mask
+#define EMIT_MASKDELAY(addr, mask)      ((OPCODE_MASKDELAY << 4) | 2) , addr, mask
+
+/* Returns codes  of PS7_Init */
+#define PS7_INIT_SUCCESS   (0)    /* 0 is success in good old C */
+#define PS7_INIT_CORRUPT   (1)    /* 1 the data is corrupted, and slcr reg are in corrupted state now */
+#define PS7_INIT_TIMEOUT   (2)    /* 2 when a poll operation timed out */
+#define PS7_POLL_FAILED_DDR_INIT (3)    /* 3 when a poll operation timed out for ddr init */
+#define PS7_POLL_FAILED_DMA      (4)    /* 4 when a poll operation timed out for dma done bit */
+#define PS7_POLL_FAILED_PLL      (5)    /* 5 when a poll operation timed out for pll sequence init */
+
+
+/* Silicon Versions */
+#define PCW_SILICON_VERSION_1 0
+#define PCW_SILICON_VERSION_2 1
+#define PCW_SILICON_VERSION_3 2
+
+/* This flag to be used by FSBL to check whether ps7_post_config() proc exixts */
+#define PS7_POST_CONFIG
+
+/* Freq of all peripherals */
+
+#define APU_FREQ  650000000
+#define DDR_FREQ  525000000
+#define DCI_FREQ  10096154
+#define QSPI_FREQ  200000000
+#define SMC_FREQ  10000000
+#define ENET0_FREQ  125000000
+#define ENET1_FREQ  10000000
+#define USB0_FREQ  60000000
+#define USB1_FREQ  60000000
+#define SDIO_FREQ  100000000
+#define UART_FREQ  100000000
+#define SPI_FREQ  10000000
+#define I2C_FREQ  108333336
+#define WDT_FREQ  108333336
+#define TTC_FREQ  50000000
+#define CAN_FREQ  10000000
+#define PCAP_FREQ  200000000
+#define TPIU_FREQ  200000000
+#define FPGA0_FREQ  50000000
+#define FPGA1_FREQ  10000000
+#define FPGA2_FREQ  10000000
+#define FPGA3_FREQ  10000000
+
+
+/* For delay calculation using global registers*/
+#define SCU_GLOBAL_TIMER_COUNT_L32	0xF8F00200
+#define SCU_GLOBAL_TIMER_COUNT_U32	0xF8F00204
+#define SCU_GLOBAL_TIMER_CONTROL	0xF8F00208
+#define SCU_GLOBAL_TIMER_AUTO_INC	0xF8F00218
+
+int ps7_config(unsigned long *);
+int ps7_init(void);
+int ps7_post_config(void);
+int ps7_debug(void);
+char *getPS7MessageInfo(unsigned key);
+
+void perf_start_clock(void);
+void perf_disable_clock(void);
+void perf_reset_clock(void);
+void perf_reset_and_start_timer(void);
+int get_number_of_cycles_for_delay(unsigned int delay);
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/configs/syzygy_hub_defconfig b/configs/syzygy_hub_defconfig
new file mode 100644
index 0000000..28adf87
--- /dev/null
+++ b/configs/syzygy_hub_defconfig
@@ -0,0 +1,57 @@
+CONFIG_ARM=y
+CONFIG_SYS_VENDOR="opalkelly"
+CONFIG_SYS_CONFIG_NAME="syzygy_hub"
+CONFIG_ARCH_ZYNQ=y
+CONFIG_SYS_TEXT_BASE=0x4000000
+CONFIG_DEFAULT_DEVICE_TREE="zynq-syzygy-hub"
+CONFIG_DEBUG_UART=y
+CONFIG_FIT=y
+CONFIG_FIT_SIGNATURE=y
+CONFIG_FIT_VERBOSE=y
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_SPL=y
+CONFIG_SPL_OS_BOOT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="Zynq> "
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_EEPROM=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_FPGA_LOADBP=y
+CONFIG_CMD_FPGA_LOADFS=y
+CONFIG_CMD_FPGA_LOADMK=y
+CONFIG_CMD_FPGA_LOADP=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_EMBED=y
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ZYNQ=y
+CONFIG_ZYNQ_GEM=y
+CONFIG_DEBUG_UART_ZYNQ=y
+CONFIG_DEBUG_UART_BASE=0xe0000000
+CONFIG_DEBUG_UART_CLOCK=50000000
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_ULPI_VIEWPORT=y
+CONFIG_USB_ULPI=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="Xilinx"
+CONFIG_G_DNL_VENDOR_NUM=0x03FD
+CONFIG_G_DNL_PRODUCT_NUM=0x0300
diff --git a/include/configs/syzygy_hub.h b/include/configs/syzygy_hub.h
new file mode 100644
index 0000000..f94b214
--- /dev/null
+++ b/include/configs/syzygy_hub.h
@@ -0,0 +1,72 @@
+/*
+ * (C) Copyright 2012 Xilinx
+ * (C) Copyright 2017 Opal Kelly Inc.
+ *
+ * Configuration settings for the SYZYGY Hub development board
+ * See zynq-common.h for Zynq common configs
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef __CONFIG_SYZYGY_HUB_H
+#define __CONFIG_SYZYGY_HUB_H
+
+#define CONFIG_ZYNQ_I2C1
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+#define CONFIG_ZYNQ_GEM_EEPROM_ADDR    0x57
+#define CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET 0xFA
+
+#define CONFIG_EXTRA_ENV_SETTINGS       \
+	"fit_image=fit.itb\0"		\
+	"bitstream_image=download.bit\0"    \
+	"loadbit_addr=0x1000000\0"      \
+	"load_addr=0x2000000\0"		\
+	"fit_size=0x800000\0"		\
+	"flash_off=0x100000\0"		\
+	"nor_flash_off=0xE2100000\0"	\
+	"fdt_high=0x20000000\0"		\
+	"initrd_high=0x20000000\0"	\
+	"loadbootenv_addr=0x2000000\0"  \
+	"fdt_addr_r=0x1f00000\0"        \
+	"pxefile_addr_r=0x2000000\0"    \
+	"kernel_addr_r=0x2000000\0"     \
+	"scriptaddr=0x3000000\0"        \
+	"ramdisk_addr_r=0x3100000\0"    \
+	"bootenv=uEnv.txt\0" \
+	"bootenv_dev=mmc\0" \
+	"loadbootenv=load ${bootenv_dev} 0 ${loadbootenv_addr} ${bootenv}\0" \
+	"importbootenv=echo Importing environment from ${bootenv_dev} ...; " \
+		"env import -t ${loadbootenv_addr} $filesize\0" \
+	"bootenv_existence_test=test -e ${bootenv_dev} 0 /${bootenv}\0" \
+	"setbootenv=if env run bootenv_existence_test; then " \
+			"if env run loadbootenv; then " \
+				"env run importbootenv; " \
+			"fi; " \
+		"fi; \0" \
+	"sd_loadbootenv=set bootenv_dev mmc && " \
+			"run setbootenv \0" \
+	"usb_loadbootenv=set bootenv_dev usb && usb start && run setbootenv \0" \
+	"preboot=if test $modeboot = sdboot; then " \
+			"run sd_loadbootenv; " \
+			"echo Checking if uenvcmd is set ...; " \
+			"if test -n $uenvcmd; then " \
+				"echo Running uenvcmd ...; " \
+				"run uenvcmd; " \
+			"fi; " \
+		"fi; \0" \
+	"sdboot=echo Copying FPGA Bitstream from SD to RAM... && " \
+		"load mmc 0 ${loadbit_addr} ${bitstream_image} && " \
+		"echo Programming FPGA... && " \
+		"fpga loadb 0 ${loadbit_addr} ${filesize} && " \
+		"echo Copying FIT from SD to RAM... && " \
+		"load mmc 0 ${load_addr} ${fit_image} && " \
+		"bootm ${load_addr}\0" \
+	"jtagboot=echo TFTPing FIT to RAM... && " \
+		"tftpboot ${load_addr} ${fit_image} && " \
+		"bootm ${load_addr}\0" \
+		DFU_ALT_INFO \
+		BOOTENV
+
+#include <configs/zynq-common.h>
+
+#endif /* __CONFIG_SYZYGY_HUB_H */
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board
  2017-09-12 18:05 [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board Tom McLeod
@ 2017-09-25 20:24 ` Tom McLeod
  2017-09-27  5:50 ` Michal Simek
  2017-09-28  0:53 ` [U-Boot] [PATCH v2] " Tom McLeod
  2 siblings, 0 replies; 8+ messages in thread
From: Tom McLeod @ 2017-09-25 20:24 UTC (permalink / raw)
  To: u-boot

Hi Michal,

I wanted to check in and see if you've had a chance to review this patch
yet. Please let me know if you need me to make any changes or if it's good
to go.

Thanks,
-Tom

On Tue, Sep 12, 2017 at 11:05 AM, Tom McLeod <tom.mcleod@opalkelly.com>
wrote:

> Add the Zynq-based SYZYGY Hub board from Opal Kelly. The board
> contains a Xilinx Zynq xc7z012s SoC, 1GB DDR3 RAM, and supports
> booting from SD.
>
> Signed-off-by: Tom McLeod <tom.mcleod@opalkelly.com>
> ---
>  arch/arm/dts/Makefile                              |    1 +
>  arch/arm/dts/zynq-syzygy-hub.dts                   |   72 ++
>  board/opalkelly/zynq/MAINTAINERS                   |    6 +
>  board/opalkelly/zynq/Makefile                      |    9 +
>  board/opalkelly/zynq/board.c                       |    1 +
>  .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c  | 1078
> ++++++++++++++++++++
>  .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h  |  103 ++
>  configs/syzygy_hub_defconfig                       |   57 ++
>  include/configs/syzygy_hub.h                       |   72 ++
>  9 files changed, 1399 insertions(+)
>  create mode 100644 arch/arm/dts/zynq-syzygy-hub.dts
>  create mode 100644 board/opalkelly/zynq/MAINTAINERS
>  create mode 100644 board/opalkelly/zynq/Makefile
>  create mode 100644 board/opalkelly/zynq/board.c
>  create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
>  create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
>  create mode 100644 configs/syzygy_hub_defconfig
>  create mode 100644 include/configs/syzygy_hub.h
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 1d6cee2..c15d94f 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -126,6 +126,7 @@ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
>         zynq-zc706.dtb \
>         zynq-zed.dtb \
>         zynq-zybo.dtb \
> +       zynq-syzygy-hub.dtb \
>         zynq-microzed.dtb \
>         zynq-picozed.dtb \
>         zynq-topic-miami.dtb \
> diff --git a/arch/arm/dts/zynq-syzygy-hub.dts b/arch/arm/dts/zynq-syzygy-
> hub.dts
> new file mode 100644
> index 0000000..c98ef01
> --- /dev/null
> +++ b/arch/arm/dts/zynq-syzygy-hub.dts
> @@ -0,0 +1,72 @@
> +/*
> + * SYZYGY Hub DTS
> + *
> + *  Copyright (C) 2011 - 2015 Xilinx
> + *  Copyright (C) 2017 Opal Kelly Inc.
> + *
> + * SPDX-License-Identifier:    GPL-2.0+
> + */
> +/dts-v1/;
> +/include/ "zynq-7000.dtsi"
> +
> +/ {
> +       model = "SYZYGY Hub";
> +       compatible = "xlnx,zynq-7000";
> +
> +       aliases {
> +               ethernet0 = &gem0;
> +               serial0 = &uart0;
> +               mmc0 = &sdhci0;
> +       };
> +
> +       memory at 0 {
> +               device_type = "memory";
> +               reg = <0x0 0x40000000>;
> +       };
> +
> +       chosen {
> +               bootargs = "";
> +               stdout-path = "serial0:115200n8";
> +       };
> +
> +       usb_phy0: phy0 {
> +               #phy-cells = <0>;
> +               compatible = "usb-nop-xceiv";
> +               reset-gpios = <&gpio0 47 1>;
> +       };
> +};
> +
> +&clkc {
> +       ps-clk-frequency = <50000000>;
> +};
> +
> +&gem0 {
> +       status = "okay";
> +       phy-mode = "rgmii-id";
> +       phy-handle = <&ethernet_phy>;
> +
> +       ethernet_phy: ethernet-phy at 0 {
> +               reg = <0>;
> +               device_type = "ethernet-phy";
> +       };
> +};
> +
> +&i2c1 {
> +       status = "okay";
> +};
> +
> +&sdhci0 {
> +       u-boot,dm-pre-reloc;
> +       status = "okay";
> +};
> +
> +&uart0 {
> +       u-boot,dm-pre-reloc;
> +       status = "okay";
> +};
> +
> +&usb0 {
> +       status = "okay";
> +       dr_mode = "otg";
> +       usb-phy = <&usb_phy0>;
> +};
> diff --git a/board/opalkelly/zynq/MAINTAINERS b/board/opalkelly/zynq/
> MAINTAINERS
> new file mode 100644
> index 0000000..df4b9b6
> --- /dev/null
> +++ b/board/opalkelly/zynq/MAINTAINERS
> @@ -0,0 +1,6 @@
> +ZYNQ BOARD
> +M:     Tom McLeod <tom.mcleod@opalkelly.com>
> +S:     Maintained
> +F:     board/opalkelly/zynq/
> +F:     include/configs/syzygy_hub.h
> +F:     configs/syzygy_hub_defconfig
> diff --git a/board/opalkelly/zynq/Makefile b/board/opalkelly/zynq/Makefile
> new file mode 100644
> index 0000000..09fc788
> --- /dev/null
> +++ b/board/opalkelly/zynq/Makefile
> @@ -0,0 +1,9 @@
> +#
> +# SPDX-License-Identifier:     GPL-2.0+
> +#
> +
> +obj-y  := board.o
> +
> +hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE))
> +
> +obj-$(CONFIG_SPL_BUILD) += $(hw-platform-y)/ps7_init_gpl.o
> diff --git a/board/opalkelly/zynq/board.c b/board/opalkelly/zynq/board.c
> new file mode 100644
> index 0000000..a95c9d1
> --- /dev/null
> +++ b/board/opalkelly/zynq/board.c
> @@ -0,0 +1 @@
> +#include "../../xilinx/zynq/board.c"
> diff --git a/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
> b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
> new file mode 100644
> index 0000000..2b111d0
> --- /dev/null
> +++ b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
> @@ -0,0 +1,1078 @@
> +/**********************************************************
> ********************
> +* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
> +*
> +*
> +* SPDX-License-Identifier: GPL-2.0+
> + ************************************************************
> *****************/
> +
> +#include "ps7_init_gpl.h"
> +
> +unsigned long ps7_pll_init_data_3_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x001772C0U),
> +       EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x0001A000U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U),
> +       EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x001DB2C0U),
> +       EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00015000U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000002U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U),
> +       EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001F42C0U),
> +       EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x00014000U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000004U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_clock_init_data_3_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00203401U),
> +       EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U),
> +       EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U),
> +       EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U),
> +       EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A01U),
> +       EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U),
> +       EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00400500U),
> +       EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01DC044DU),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_ddr_init_data_3_0[] = {
> +       EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006004, 0x0007FFFFU, 0x00001081U),
> +       EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU),
> +       EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U),
> +       EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U),
> +       EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU),
> +       EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U),
> +       EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U),
> +       EMIT_MASKWRITE(0XF8006020, 0x7FDFFFFCU, 0x270872D0U),
> +       EMIT_MASKWRITE(0XF8006024, 0x0FFFFFC3U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U),
> +       EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U),
> +       EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U),
> +       EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U),
> +       EMIT_MASKWRITE(0XF8006038, 0x00000003U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U),
> +       EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U),
> +       EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U),
> +       EMIT_MASKWRITE(0XF8006048, 0x0003F03FU, 0x0003C008U),
> +       EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U),
> +       EMIT_MASKWRITE(0XF8006058, 0x00010000U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U),
> +       EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU),
> +       EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U),
> +       EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U),
> +       EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U),
> +       EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU, 0x00466111U),
> +       EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU, 0x00032222U),
> +       EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U),
> +       EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
> +       EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU),
> +       EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
> +       EMIT_MASKWRITE(0XF80060B4, 0x00000200U, 0x00000200U),
> +       EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U),
> +       EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U),
> +       EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8006118, 0x7FFFFFCFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF800611C, 0x7FFFFFCFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF8006120, 0x7FFFFFCFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF8006124, 0x7FFFFFCFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006190, 0x6FFFFEFEU, 0x00040080U),
> +       EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U),
> +       EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8006208, 0x000703FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF800620C, 0x000703FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006210, 0x000703FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006214, 0x000703FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF80062A8, 0x00000FF5U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U),
> +       EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U),
> +       EMIT_MASKPOLL(0XF8000B74, 0x00002000U),
> +       EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U),
> +       EMIT_MASKPOLL(0XF8006054, 0x00000007U),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_mio_init_data_3_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U),
> +       EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U),
> +       EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U),
> +       EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U),
> +       EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
> +       EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU, 0x00000260U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x07FEFFFFU, 0x00000823U),
> +       EMIT_MASKWRITE(0XF8000700, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000704, 0x00003FFFU, 0x00001602U),
> +       EMIT_MASKWRITE(0XF8000708, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF800070C, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000710, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000714, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000718, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF800071C, 0x00003FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000720, 0x00003FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000724, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000728, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF800072C, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000730, 0x00003FFFU, 0x00001640U),
> +       EMIT_MASKWRITE(0XF8000734, 0x00003FFFU, 0x00001640U),
> +       EMIT_MASKWRITE(0XF8000738, 0x00003FFFU, 0x000016E1U),
> +       EMIT_MASKWRITE(0XF800073C, 0x00003FFFU, 0x000016E0U),
> +       EMIT_MASKWRITE(0XF8000740, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000744, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000748, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF800074C, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000750, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000754, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000758, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF800075C, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000760, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000764, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000768, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF800076C, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000770, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000774, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000778, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800077C, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000780, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000784, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000788, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800078C, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000790, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000794, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000798, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800079C, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B8, 0x00003F01U, 0x00001201U),
> +       EMIT_MASKWRITE(0XF80007BC, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF8000830, 0x003F003FU, 0x002E0037U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_peripherals_init_data_3_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_MASKWRITE(0XE0000034, 0x000000FFU, 0x00000006U),
> +       EMIT_MASKWRITE(0XE0000018, 0x0000FFFFU, 0x0000007CU),
> +       EMIT_MASKWRITE(0XE0000000, 0x000001FFU, 0x00000017U),
> +       EMIT_MASKWRITE(0XE0000004, 0x000003FFU, 0x00000020U),
> +       EMIT_MASKWRITE(0XE000D000, 0x00080000U, 0x00080000U),
> +       EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U),
> +       EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
> +       EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF0000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
> +       EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_post_config_3_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU),
> +       EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_debug_3_0[] = {
> +       EMIT_WRITE(0XF8898FB0, 0xC5ACCE55U),
> +       EMIT_WRITE(0XF8899FB0, 0xC5ACCE55U),
> +       EMIT_WRITE(0XF8809FB0, 0xC5ACCE55U),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_pll_init_data_2_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x001772C0U),
> +       EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x0001A000U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U),
> +       EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x001DB2C0U),
> +       EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00015000U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000002U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U),
> +       EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001F42C0U),
> +       EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x00014000U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000004U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_clock_init_data_2_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00203401U),
> +       EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U),
> +       EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U),
> +       EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U),
> +       EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A01U),
> +       EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U),
> +       EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00400500U),
> +       EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01DC044DU),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_ddr_init_data_2_0[] = {
> +       EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006004, 0x1FFFFFFFU, 0x00081081U),
> +       EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU),
> +       EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U),
> +       EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U),
> +       EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU),
> +       EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U),
> +       EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U),
> +       EMIT_MASKWRITE(0XF8006020, 0xFFFFFFFCU, 0x272872D0U),
> +       EMIT_MASKWRITE(0XF8006024, 0x0FFFFFFFU, 0x0000003CU),
> +       EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U),
> +       EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U),
> +       EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U),
> +       EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U),
> +       EMIT_MASKWRITE(0XF8006038, 0x00001FC3U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U),
> +       EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U),
> +       EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U),
> +       EMIT_MASKWRITE(0XF8006048, 0x3FFFFFFFU, 0x0003C248U),
> +       EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U),
> +       EMIT_MASKWRITE(0XF8006058, 0x0001FFFFU, 0x00000101U),
> +       EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U),
> +       EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU),
> +       EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U),
> +       EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U),
> +       EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U),
> +       EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU, 0x00466111U),
> +       EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU, 0x00032222U),
> +       EMIT_MASKWRITE(0XF80060A0, 0x00FFFFFFU, 0x00008000U),
> +       EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U),
> +       EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
> +       EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU),
> +       EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
> +       EMIT_MASKWRITE(0XF80060B4, 0x000007FFU, 0x00000200U),
> +       EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U),
> +       EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U),
> +       EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8006118, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF800611C, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF8006120, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF8006124, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006190, 0xFFFFFFFFU, 0x10040080U),
> +       EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U),
> +       EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8006208, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF800620C, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF8006210, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF8006214, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF80062A8, 0x00000FF7U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U),
> +       EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U),
> +       EMIT_MASKPOLL(0XF8000B74, 0x00002000U),
> +       EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U),
> +       EMIT_MASKPOLL(0XF8006054, 0x00000007U),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_mio_init_data_2_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U),
> +       EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U),
> +       EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U),
> +       EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U),
> +       EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
> +       EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU, 0x00000260U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000021U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x07FFFFFFU, 0x00000823U),
> +       EMIT_MASKWRITE(0XF8000700, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000704, 0x00003FFFU, 0x00001602U),
> +       EMIT_MASKWRITE(0XF8000708, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF800070C, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000710, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000714, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000718, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF800071C, 0x00003FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000720, 0x00003FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000724, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000728, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF800072C, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000730, 0x00003FFFU, 0x00001640U),
> +       EMIT_MASKWRITE(0XF8000734, 0x00003FFFU, 0x00001640U),
> +       EMIT_MASKWRITE(0XF8000738, 0x00003FFFU, 0x000016E1U),
> +       EMIT_MASKWRITE(0XF800073C, 0x00003FFFU, 0x000016E0U),
> +       EMIT_MASKWRITE(0XF8000740, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000744, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000748, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF800074C, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000750, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000754, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000758, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF800075C, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000760, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000764, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000768, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF800076C, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000770, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000774, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000778, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800077C, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000780, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000784, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000788, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800078C, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000790, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000794, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000798, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800079C, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B8, 0x00003F01U, 0x00001201U),
> +       EMIT_MASKWRITE(0XF80007BC, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF8000830, 0x003F003FU, 0x002E0037U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_peripherals_init_data_2_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_MASKWRITE(0XE0000034, 0x000000FFU, 0x00000006U),
> +       EMIT_MASKWRITE(0XE0000018, 0x0000FFFFU, 0x0000007CU),
> +       EMIT_MASKWRITE(0XE0000000, 0x000001FFU, 0x00000017U),
> +       EMIT_MASKWRITE(0XE0000004, 0x00000FFFU, 0x00000020U),
> +       EMIT_MASKWRITE(0XE000D000, 0x00080000U, 0x00080000U),
> +       EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U),
> +       EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
> +       EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF0000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
> +       EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_post_config_2_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU),
> +       EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_debug_2_0[] = {
> +       EMIT_WRITE(0XF8898FB0, 0xC5ACCE55U),
> +       EMIT_WRITE(0XF8899FB0, 0xC5ACCE55U),
> +       EMIT_WRITE(0XF8809FB0, 0xC5ACCE55U),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_pll_init_data_1_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x001772C0U),
> +       EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x0001A000U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U),
> +       EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x001DB2C0U),
> +       EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00015000U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000002U),
> +       EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U),
> +       EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001F42C0U),
> +       EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x00014000U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U),
> +       EMIT_MASKPOLL(0XF800010C, 0x00000004U),
> +       EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_clock_init_data_1_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00203401U),
> +       EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U),
> +       EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U),
> +       EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U),
> +       EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A01U),
> +       EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U),
> +       EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00400500U),
> +       EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U),
> +       EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01DC044DU),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_ddr_init_data_1_0[] = {
> +       EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006004, 0x1FFFFFFFU, 0x00081081U),
> +       EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU),
> +       EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U),
> +       EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U),
> +       EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU),
> +       EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U),
> +       EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U),
> +       EMIT_MASKWRITE(0XF8006020, 0xFFFFFFFCU, 0x272872D0U),
> +       EMIT_MASKWRITE(0XF8006024, 0x0FFFFFFFU, 0x0000003CU),
> +       EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U),
> +       EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U),
> +       EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U),
> +       EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U),
> +       EMIT_MASKWRITE(0XF8006038, 0x00001FC3U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U),
> +       EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U),
> +       EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U),
> +       EMIT_MASKWRITE(0XF8006048, 0x3FFFFFFFU, 0x0003C248U),
> +       EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U),
> +       EMIT_MASKWRITE(0XF8006058, 0x0001FFFFU, 0x00000101U),
> +       EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U),
> +       EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU),
> +       EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U),
> +       EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U),
> +       EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U),
> +       EMIT_MASKWRITE(0XF80060A0, 0x00FFFFFFU, 0x00008000U),
> +       EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U),
> +       EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
> +       EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU),
> +       EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
> +       EMIT_MASKWRITE(0XF80060B4, 0x000007FFU, 0x00000200U),
> +       EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U),
> +       EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U),
> +       EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8006118, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF800611C, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF8006120, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF8006124, 0x7FFFFFFFU, 0x40000001U),
> +       EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00029000U),
> +       EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U),
> +       EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x00000080U),
> +       EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F9U),
> +       EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000C0U),
> +       EMIT_MASKWRITE(0XF8006190, 0xFFFFFFFFU, 0x10040080U),
> +       EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U),
> +       EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF8006208, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF800620C, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF8006210, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF8006214, 0x000F03FFU, 0x000803FFU),
> +       EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU),
> +       EMIT_MASKWRITE(0XF80062A8, 0x00000FF7U, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U),
> +       EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U),
> +       EMIT_MASKPOLL(0XF8000B74, 0x00002000U),
> +       EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U),
> +       EMIT_MASKPOLL(0XF8006054, 0x00000007U),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_mio_init_data_1_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U),
> +       EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U),
> +       EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U),
> +       EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U),
> +       EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
> +       EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
> +       EMIT_MASKWRITE(0XF8000B6C, 0x000073FFU, 0x00000260U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000021U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U),
> +       EMIT_MASKWRITE(0XF8000B70, 0x07FFFFFFU, 0x00000823U),
> +       EMIT_MASKWRITE(0XF8000700, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000704, 0x00003FFFU, 0x00001602U),
> +       EMIT_MASKWRITE(0XF8000708, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF800070C, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000710, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000714, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF8000718, 0x00003FFFU, 0x00000602U),
> +       EMIT_MASKWRITE(0XF800071C, 0x00003FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000720, 0x00003FFFU, 0x00000600U),
> +       EMIT_MASKWRITE(0XF8000724, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000728, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF800072C, 0x00003FFFU, 0x00001600U),
> +       EMIT_MASKWRITE(0XF8000730, 0x00003FFFU, 0x00001640U),
> +       EMIT_MASKWRITE(0XF8000734, 0x00003FFFU, 0x00001640U),
> +       EMIT_MASKWRITE(0XF8000738, 0x00003FFFU, 0x000016E1U),
> +       EMIT_MASKWRITE(0XF800073C, 0x00003FFFU, 0x000016E0U),
> +       EMIT_MASKWRITE(0XF8000740, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000744, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000748, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF800074C, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000750, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000754, 0x00003FFFU, 0x00001202U),
> +       EMIT_MASKWRITE(0XF8000758, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF800075C, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000760, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000764, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000768, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF800076C, 0x00003FFFU, 0x00001203U),
> +       EMIT_MASKWRITE(0XF8000770, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000774, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000778, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800077C, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000780, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000784, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000788, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800078C, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000790, 0x00003FFFU, 0x00001205U),
> +       EMIT_MASKWRITE(0XF8000794, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF8000798, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF800079C, 0x00003FFFU, 0x00001204U),
> +       EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007B8, 0x00003F01U, 0x00001201U),
> +       EMIT_MASKWRITE(0XF80007BC, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU, 0x00001200U),
> +       EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU, 0x00001280U),
> +       EMIT_MASKWRITE(0XF8000830, 0x003F003FU, 0x002E0037U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_peripherals_init_data_1_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U),
> +       EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_MASKWRITE(0XE0000034, 0x000000FFU, 0x00000006U),
> +       EMIT_MASKWRITE(0XE0000018, 0x0000FFFFU, 0x0000007CU),
> +       EMIT_MASKWRITE(0XE0000000, 0x000001FFU, 0x00000017U),
> +       EMIT_MASKWRITE(0XE0000004, 0x00000FFFU, 0x00000020U),
> +       EMIT_MASKWRITE(0XE000D000, 0x00080000U, 0x00080000U),
> +       EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U),
> +       EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
> +       EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF0000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
> +       EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370000U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_MASKDELAY(0XF8F00200, 1),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_post_config_1_0[] = {
> +       EMIT_WRITE(0XF8000008, 0x0000DF0DU),
> +       EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU),
> +       EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U),
> +       EMIT_WRITE(0XF8000004, 0x0000767BU),
> +       EMIT_EXIT(),
> +
> +};
> +
> +unsigned long ps7_debug_1_0[] = {
> +       EMIT_WRITE(0XF8898FB0, 0xC5ACCE55U),
> +       EMIT_WRITE(0XF8899FB0, 0xC5ACCE55U),
> +       EMIT_WRITE(0XF8809FB0, 0xC5ACCE55U),
> +       EMIT_EXIT(),
> +
> +};
> +
> +#define PS7_MASK_POLL_TIME 100000000
> +
> +char *getPS7MessageInfo(unsigned key)
> +{
> +       char *err_msg = "";
> +
> +       switch (key) {
> +       case PS7_INIT_SUCCESS:
> +               err_msg = "PS7 initialization successful";
> +               break;
> +       case PS7_INIT_CORRUPT:
> +               err_msg = "PS7 init Data Corrupted";
> +               break;
> +       case PS7_INIT_TIMEOUT:
> +               err_msg = "PS7 init mask poll timeout";
> +               break;
> +       case PS7_POLL_FAILED_DDR_INIT:
> +               err_msg = "Mask Poll failed for DDR Init";
> +               break;
> +       case PS7_POLL_FAILED_DMA:
> +               err_msg = "Mask Poll failed for PLL Init";
> +               break;
> +       case PS7_POLL_FAILED_PLL:
> +               err_msg = "Mask Poll failed for DMA done bit";
> +               break;
> +       default:
> +               err_msg = "Undefined error status";
> +               break;
> +       }
> +
> +       return err_msg;
> +}
> +
> +unsigned long ps7GetSiliconVersion(void)
> +{
> +       unsigned long mask = 0xF0000000;
> +       unsigned long *addr = (unsigned long *)0XF8007080;
> +       unsigned long ps_version = (*addr & mask) >> 28;
> +
> +       return ps_version;
> +}
> +
> +void mask_write(unsigned long add, unsigned long mask, unsigned long val)
> +{
> +       volatile unsigned long *addr = (volatile unsigned long *)add;
> +
> +       *addr = (val & mask) | (*addr & ~mask);
> +}
> +
> +int mask_poll(unsigned long add, unsigned long mask)
> +{
> +       volatile unsigned long *addr = (volatile unsigned long *)add;
> +       int i = 0;
> +
> +       while (!(*addr & mask)) {
> +               if (i == PS7_MASK_POLL_TIME)
> +                       return -1;
> +               i++;
> +       }
> +       return 1;
> +}
> +
> +unsigned long mask_read(unsigned long add, unsigned long mask)
> +{
> +       volatile unsigned long *addr = (volatile unsigned long *)add;
> +       unsigned long val = (*addr & mask);
> +
> +       return val;
> +}
> +
> +int ps7_config(unsigned long *ps7_config_init)
> +{
> +       unsigned long *ptr = ps7_config_init;
> +
> +       unsigned long opcode;   /* current instruction .. */
> +       unsigned long args[16]; /* no opcode has so many args ... */
> +       int numargs;            /* number of arguments of this instruction
> */
> +       int j;                  /* general purpose index */
> +
> +       volatile unsigned long *addr;   /* some variable to make code
> readable */
> +       unsigned long val, mask;        /* some variable to make code
> readable */
> +
> +       int finish = -1;        /* loop while this is negative ! */
> +       int i = 0;              /* Timeout variable */
> +
> +       while (finish < 0) {
> +               numargs = ptr[0] & 0xF;
> +               opcode = ptr[0] >> 4;
> +
> +               for (j = 0; j < numargs; j++)
> +                       args[j] = ptr[j + 1];
> +               ptr += numargs + 1;
> +
> +               switch (opcode) {
> +               case OPCODE_EXIT:
> +                       finish = PS7_INIT_SUCCESS;
> +                       break;
> +
> +               case OPCODE_CLEAR:
> +                       addr = (unsigned long *)args[0];
> +                       *addr = 0;
> +                       break;
> +
> +               case OPCODE_WRITE:
> +                       addr = (unsigned long *)args[0];
> +                       val = args[1];
> +                       *addr = val;
> +                       break;
> +
> +               case OPCODE_MASKWRITE:
> +                       addr = (unsigned long *)args[0];
> +                       mask = args[1];
> +                       val = args[2];
> +                       *addr = (val & mask) | (*addr & ~mask);
> +                       break;
> +
> +               case OPCODE_MASKPOLL:
> +                       addr = (unsigned long *)args[0];
> +                       mask = args[1];
> +                       i = 0;
> +                       while (!(*addr & mask)) {
> +                               if (i == PS7_MASK_POLL_TIME) {
> +                                       finish = PS7_INIT_TIMEOUT;
> +                                       break;
> +                               }
> +                               i++;
> +                       }
> +                       break;
> +               case OPCODE_MASKDELAY:
> +                       addr = (unsigned long *)args[0];
> +                       mask = args[1];
> +                       int delay = get_number_of_cycles_for_delay(mask);
> +                       perf_reset_and_start_timer();
> +                       while ((*addr < delay))
> +                               ;
> +                       break;
> +               default:
> +                       finish = PS7_INIT_CORRUPT;
> +                       break;
> +               }
> +       }
> +       return finish;
> +}
> +
> +unsigned long *ps7_mio_init_data = ps7_mio_init_data_3_0;
> +unsigned long *ps7_pll_init_data = ps7_pll_init_data_3_0;
> +unsigned long *ps7_clock_init_data = ps7_clock_init_data_3_0;
> +unsigned long *ps7_ddr_init_data = ps7_ddr_init_data_3_0;
> +unsigned long *ps7_peripherals_init_data = ps7_peripherals_init_data_3_0;
> +
> +int ps7_post_config(void)
> +{
> +       unsigned long si_ver = ps7GetSiliconVersion();
> +       int ret = -1;
> +
> +       if (si_ver == PCW_SILICON_VERSION_1) {
> +               ret = ps7_config(ps7_post_config_1_0);
> +               if (ret != PS7_INIT_SUCCESS)
> +                       return ret;
> +       } else if (si_ver == PCW_SILICON_VERSION_2) {
> +               ret = ps7_config(ps7_post_config_2_0);
> +               if (ret != PS7_INIT_SUCCESS)
> +                       return ret;
> +       } else {
> +               ret = ps7_config(ps7_post_config_3_0);
> +               if (ret != PS7_INIT_SUCCESS)
> +                       return ret;
> +       }
> +       return PS7_INIT_SUCCESS;
> +}
> +
> +int ps7_debug(void)
> +{
> +       unsigned long si_ver = ps7GetSiliconVersion();
> +       int ret = -1;
> +
> +       if (si_ver == PCW_SILICON_VERSION_1) {
> +               ret = ps7_config(ps7_debug_1_0);
> +               if (ret != PS7_INIT_SUCCESS)
> +                       return ret;
> +       } else if (si_ver == PCW_SILICON_VERSION_2) {
> +               ret = ps7_config(ps7_debug_2_0);
> +               if (ret != PS7_INIT_SUCCESS)
> +                       return ret;
> +       } else {
> +               ret = ps7_config(ps7_debug_3_0);
> +               if (ret != PS7_INIT_SUCCESS)
> +                       return ret;
> +       }
> +       return PS7_INIT_SUCCESS;
> +}
> +
> +int ps7_reset_apu(void)
> +{
> +       mask_write(0xF8000244, 0x00000022U, 0x00000022U);
> +       return PS7_INIT_SUCCESS;
> +}
> +
> +int ps7_init(void)
> +{
> +       unsigned long si_ver = ps7GetSiliconVersion();
> +       int ret;
> +
> +
> +       ret = ps7_reset_apu();
> +       if (ret != PS7_INIT_SUCCESS)
> +               return ret;
> +
> +       if (si_ver == PCW_SILICON_VERSION_1) {
> +               ps7_mio_init_data = ps7_mio_init_data_1_0;
> +               ps7_pll_init_data = ps7_pll_init_data_1_0;
> +               ps7_clock_init_data = ps7_clock_init_data_1_0;
> +               ps7_ddr_init_data = ps7_ddr_init_data_1_0;
> +               ps7_peripherals_init_data = ps7_peripherals_init_data_1_0;
> +       } else if (si_ver == PCW_SILICON_VERSION_2) {
> +               ps7_mio_init_data = ps7_mio_init_data_2_0;
> +               ps7_pll_init_data = ps7_pll_init_data_2_0;
> +               ps7_clock_init_data = ps7_clock_init_data_2_0;
> +               ps7_ddr_init_data = ps7_ddr_init_data_2_0;
> +               ps7_peripherals_init_data = ps7_peripherals_init_data_2_0;
> +       } else {
> +               ps7_mio_init_data = ps7_mio_init_data_3_0;
> +               ps7_pll_init_data = ps7_pll_init_data_3_0;
> +               ps7_clock_init_data = ps7_clock_init_data_3_0;
> +               ps7_ddr_init_data = ps7_ddr_init_data_3_0;
> +               ps7_peripherals_init_data = ps7_peripherals_init_data_3_0;
> +       }
> +
> +       ret = ps7_config(ps7_mio_init_data);
> +       if (ret != PS7_INIT_SUCCESS)
> +               return ret;
> +
> +       ret = ps7_config(ps7_pll_init_data);
> +       if (ret != PS7_INIT_SUCCESS)
> +               return ret;
> +
> +       ret = ps7_config(ps7_clock_init_data);
> +       if (ret != PS7_INIT_SUCCESS)
> +               return ret;
> +
> +       ret = ps7_config(ps7_ddr_init_data);
> +       if (ret != PS7_INIT_SUCCESS)
> +               return ret;
> +
> +       ret = ps7_config(ps7_peripherals_init_data);
> +       if (ret != PS7_INIT_SUCCESS)
> +               return ret;
> +       return PS7_INIT_SUCCESS;
> +}
> +
> +/* For delay calculation using global timer */
> +
> +/* start timer */
> +void perf_start_clock(void)
> +{
> +       *(volatile unsigned int *)SCU_GLOBAL_TIMER_CONTROL = ((1 << 0) |
>       /* Timer Enable */
> +                                                             (1 << 3) |
>       /* Auto-increment */
> +                                                             (0 << 8)  /*
> Pre-scale */
> +           );
> +}
> +
> +/* stop timer and reset timer count regs */
> +void perf_reset_clock(void)
> +{
> +       perf_disable_clock();
> +       *(volatile unsigned int *)SCU_GLOBAL_TIMER_COUNT_L32 = 0;
> +       *(volatile unsigned int *)SCU_GLOBAL_TIMER_COUNT_U32 = 0;
> +}
> +
> +/* Compute mask for given delay in miliseconds*/
> +int get_number_of_cycles_for_delay(unsigned int delay)
> +{
> +       return APU_FREQ * delay / (2 * 1000);
> +}
> +
> +/* stop timer */
> +void perf_disable_clock(void)
> +{
> +       *(volatile unsigned int *)SCU_GLOBAL_TIMER_CONTROL = 0;
> +}
> +
> +void perf_reset_and_start_timer(void)
> +{
> +       perf_reset_clock();
> +       perf_start_clock();
> +}
> diff --git a/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
> b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
> new file mode 100644
> index 0000000..6f486d1
> --- /dev/null
> +++ b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
> @@ -0,0 +1,103 @@
> +/**********************************************************
> ********************
> +*
> +* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
> +*
> +* SPDX-License-Identifier: GPL-2.0+
> +***********************************************************
> ******************/
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +
> +
> +
> +/** do we need to make this name more unique ? **/
> +extern unsigned long  *ps7_ddr_init_data;
> +extern unsigned long  *ps7_mio_init_data;
> +extern unsigned long  *ps7_pll_init_data;
> +extern unsigned long  *ps7_clock_init_data;
> +extern unsigned long  *ps7_peripherals_init_data;
> +
> +
> +
> +#define OPCODE_EXIT       0U
> +#define OPCODE_CLEAR      1U
> +#define OPCODE_WRITE      2U
> +#define OPCODE_MASKWRITE  3U
> +#define OPCODE_MASKPOLL   4U
> +#define OPCODE_MASKDELAY  5U
> +#define NEW_PS7_ERR_CODE 1
> +
> +/* Encode number of arguments in last nibble */
> +#define EMIT_EXIT()                   ((OPCODE_EXIT      << 4) | 0)
> +#define EMIT_CLEAR(addr)              ((OPCODE_CLEAR     << 4) | 1) , addr
> +#define EMIT_WRITE(addr, val)          ((OPCODE_WRITE     << 4) | 2) ,
> addr, val
> +#define EMIT_MASKWRITE(addr, mask, val) ((OPCODE_MASKWRITE << 4) | 3) ,
> addr, mask, val
> +#define EMIT_MASKPOLL(addr, mask)      ((OPCODE_MASKPOLL  << 4) | 2) ,
> addr, mask
> +#define EMIT_MASKDELAY(addr, mask)      ((OPCODE_MASKDELAY << 4) | 2) ,
> addr, mask
> +
> +/* Returns codes  of PS7_Init */
> +#define PS7_INIT_SUCCESS   (0)    /* 0 is success in good old C */
> +#define PS7_INIT_CORRUPT   (1)    /* 1 the data is corrupted, and slcr
> reg are in corrupted state now */
> +#define PS7_INIT_TIMEOUT   (2)    /* 2 when a poll operation timed out */
> +#define PS7_POLL_FAILED_DDR_INIT (3)    /* 3 when a poll operation timed
> out for ddr init */
> +#define PS7_POLL_FAILED_DMA      (4)    /* 4 when a poll operation timed
> out for dma done bit */
> +#define PS7_POLL_FAILED_PLL      (5)    /* 5 when a poll operation timed
> out for pll sequence init */
> +
> +
> +/* Silicon Versions */
> +#define PCW_SILICON_VERSION_1 0
> +#define PCW_SILICON_VERSION_2 1
> +#define PCW_SILICON_VERSION_3 2
> +
> +/* This flag to be used by FSBL to check whether ps7_post_config() proc
> exixts */
> +#define PS7_POST_CONFIG
> +
> +/* Freq of all peripherals */
> +
> +#define APU_FREQ  650000000
> +#define DDR_FREQ  525000000
> +#define DCI_FREQ  10096154
> +#define QSPI_FREQ  200000000
> +#define SMC_FREQ  10000000
> +#define ENET0_FREQ  125000000
> +#define ENET1_FREQ  10000000
> +#define USB0_FREQ  60000000
> +#define USB1_FREQ  60000000
> +#define SDIO_FREQ  100000000
> +#define UART_FREQ  100000000
> +#define SPI_FREQ  10000000
> +#define I2C_FREQ  108333336
> +#define WDT_FREQ  108333336
> +#define TTC_FREQ  50000000
> +#define CAN_FREQ  10000000
> +#define PCAP_FREQ  200000000
> +#define TPIU_FREQ  200000000
> +#define FPGA0_FREQ  50000000
> +#define FPGA1_FREQ  10000000
> +#define FPGA2_FREQ  10000000
> +#define FPGA3_FREQ  10000000
> +
> +
> +/* For delay calculation using global registers*/
> +#define SCU_GLOBAL_TIMER_COUNT_L32     0xF8F00200
> +#define SCU_GLOBAL_TIMER_COUNT_U32     0xF8F00204
> +#define SCU_GLOBAL_TIMER_CONTROL       0xF8F00208
> +#define SCU_GLOBAL_TIMER_AUTO_INC      0xF8F00218
> +
> +int ps7_config(unsigned long *);
> +int ps7_init(void);
> +int ps7_post_config(void);
> +int ps7_debug(void);
> +char *getPS7MessageInfo(unsigned key);
> +
> +void perf_start_clock(void);
> +void perf_disable_clock(void);
> +void perf_reset_clock(void);
> +void perf_reset_and_start_timer(void);
> +int get_number_of_cycles_for_delay(unsigned int delay);
> +#ifdef __cplusplus
> +}
> +#endif
> +
> diff --git a/configs/syzygy_hub_defconfig b/configs/syzygy_hub_defconfig
> new file mode 100644
> index 0000000..28adf87
> --- /dev/null
> +++ b/configs/syzygy_hub_defconfig
> @@ -0,0 +1,57 @@
> +CONFIG_ARM=y
> +CONFIG_SYS_VENDOR="opalkelly"
> +CONFIG_SYS_CONFIG_NAME="syzygy_hub"
> +CONFIG_ARCH_ZYNQ=y
> +CONFIG_SYS_TEXT_BASE=0x4000000
> +CONFIG_DEFAULT_DEVICE_TREE="zynq-syzygy-hub"
> +CONFIG_DEBUG_UART=y
> +CONFIG_FIT=y
> +CONFIG_FIT_SIGNATURE=y
> +CONFIG_FIT_VERBOSE=y
> +# CONFIG_DISPLAY_CPUINFO is not set
> +CONFIG_SPL=y
> +CONFIG_SPL_OS_BOOT=y
> +CONFIG_HUSH_PARSER=y
> +CONFIG_SYS_PROMPT="Zynq> "
> +CONFIG_CMD_BOOTZ=y
> +# CONFIG_CMD_IMLS is not set
> +CONFIG_CMD_EEPROM=y
> +# CONFIG_CMD_FLASH is not set
> +CONFIG_CMD_FPGA_LOADBP=y
> +CONFIG_CMD_FPGA_LOADFS=y
> +CONFIG_CMD_FPGA_LOADMK=y
> +CONFIG_CMD_FPGA_LOADP=y
> +CONFIG_CMD_GPIO=y
> +CONFIG_CMD_I2C=y
> +CONFIG_CMD_MMC=y
> +CONFIG_CMD_USB=y
> +# CONFIG_CMD_SETEXPR is not set
> +CONFIG_CMD_TFTPPUT=y
> +CONFIG_CMD_DHCP=y
> +CONFIG_CMD_MII=y
> +CONFIG_CMD_PING=y
> +CONFIG_CMD_CACHE=y
> +CONFIG_CMD_EXT2=y
> +CONFIG_CMD_EXT4=y
> +CONFIG_CMD_EXT4_WRITE=y
> +CONFIG_CMD_FAT=y
> +CONFIG_CMD_FS_GENERIC=y
> +CONFIG_OF_EMBED=y
> +CONFIG_SPL_DM_SEQ_ALIAS=y
> +CONFIG_MMC_SDHCI=y
> +CONFIG_MMC_SDHCI_ZYNQ=y
> +CONFIG_ZYNQ_GEM=y
> +CONFIG_DEBUG_UART_ZYNQ=y
> +CONFIG_DEBUG_UART_BASE=0xe0000000
> +CONFIG_DEBUG_UART_CLOCK=50000000
> +CONFIG_USB=y
> +CONFIG_USB_EHCI_HCD=y
> +CONFIG_USB_ULPI_VIEWPORT=y
> +CONFIG_USB_ULPI=y
> +CONFIG_USB_STORAGE=y
> +CONFIG_USB_GADGET=y
> +CONFIG_CI_UDC=y
> +CONFIG_USB_GADGET_DOWNLOAD=y
> +CONFIG_G_DNL_MANUFACTURER="Xilinx"
> +CONFIG_G_DNL_VENDOR_NUM=0x03FD
> +CONFIG_G_DNL_PRODUCT_NUM=0x0300
> diff --git a/include/configs/syzygy_hub.h b/include/configs/syzygy_hub.h
> new file mode 100644
> index 0000000..f94b214
> --- /dev/null
> +++ b/include/configs/syzygy_hub.h
> @@ -0,0 +1,72 @@
> +/*
> + * (C) Copyright 2012 Xilinx
> + * (C) Copyright 2017 Opal Kelly Inc.
> + *
> + * Configuration settings for the SYZYGY Hub development board
> + * See zynq-common.h for Zynq common configs
> + *
> + * SPDX-License-Identifier:    GPL-2.0+
> + */
> +
> +#ifndef __CONFIG_SYZYGY_HUB_H
> +#define __CONFIG_SYZYGY_HUB_H
> +
> +#define CONFIG_ZYNQ_I2C1
> +#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
> +#define CONFIG_ZYNQ_GEM_EEPROM_ADDR    0x57
> +#define CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET 0xFA
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS       \
> +       "fit_image=fit.itb\0"           \
> +       "bitstream_image=download.bit\0"    \
> +       "loadbit_addr=0x1000000\0"      \
> +       "load_addr=0x2000000\0"         \
> +       "fit_size=0x800000\0"           \
> +       "flash_off=0x100000\0"          \
> +       "nor_flash_off=0xE2100000\0"    \
> +       "fdt_high=0x20000000\0"         \
> +       "initrd_high=0x20000000\0"      \
> +       "loadbootenv_addr=0x2000000\0"  \
> +       "fdt_addr_r=0x1f00000\0"        \
> +       "pxefile_addr_r=0x2000000\0"    \
> +       "kernel_addr_r=0x2000000\0"     \
> +       "scriptaddr=0x3000000\0"        \
> +       "ramdisk_addr_r=0x3100000\0"    \
> +       "bootenv=uEnv.txt\0" \
> +       "bootenv_dev=mmc\0" \
> +       "loadbootenv=load ${bootenv_dev} 0 ${loadbootenv_addr}
> ${bootenv}\0" \
> +       "importbootenv=echo Importing environment from ${bootenv_dev} ...;
> " \
> +               "env import -t ${loadbootenv_addr} $filesize\0" \
> +       "bootenv_existence_test=test -e ${bootenv_dev} 0 /${bootenv}\0" \
> +       "setbootenv=if env run bootenv_existence_test; then " \
> +                       "if env run loadbootenv; then " \
> +                               "env run importbootenv; " \
> +                       "fi; " \
> +               "fi; \0" \
> +       "sd_loadbootenv=set bootenv_dev mmc && " \
> +                       "run setbootenv \0" \
> +       "usb_loadbootenv=set bootenv_dev usb && usb start && run
> setbootenv \0" \
> +       "preboot=if test $modeboot = sdboot; then " \
> +                       "run sd_loadbootenv; " \
> +                       "echo Checking if uenvcmd is set ...; " \
> +                       "if test -n $uenvcmd; then " \
> +                               "echo Running uenvcmd ...; " \
> +                               "run uenvcmd; " \
> +                       "fi; " \
> +               "fi; \0" \
> +       "sdboot=echo Copying FPGA Bitstream from SD to RAM... && " \
> +               "load mmc 0 ${loadbit_addr} ${bitstream_image} && " \
> +               "echo Programming FPGA... && " \
> +               "fpga loadb 0 ${loadbit_addr} ${filesize} && " \
> +               "echo Copying FIT from SD to RAM... && " \
> +               "load mmc 0 ${load_addr} ${fit_image} && " \
> +               "bootm ${load_addr}\0" \
> +       "jtagboot=echo TFTPing FIT to RAM... && " \
> +               "tftpboot ${load_addr} ${fit_image} && " \
> +               "bootm ${load_addr}\0" \
> +               DFU_ALT_INFO \
> +               BOOTENV
> +
> +#include <configs/zynq-common.h>
> +
> +#endif /* __CONFIG_SYZYGY_HUB_H */
> --
> 2.7.4
>
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board
  2017-09-12 18:05 [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board Tom McLeod
  2017-09-25 20:24 ` Tom McLeod
@ 2017-09-27  5:50 ` Michal Simek
  2017-09-27 16:33   ` Tom McLeod
  2017-09-28  0:53 ` [U-Boot] [PATCH v2] " Tom McLeod
  2 siblings, 1 reply; 8+ messages in thread
From: Michal Simek @ 2017-09-27  5:50 UTC (permalink / raw)
  To: u-boot

On 12.9.2017 20:05, Tom McLeod wrote:
> Add the Zynq-based SYZYGY Hub board from Opal Kelly. The board
> contains a Xilinx Zynq xc7z012s SoC, 1GB DDR3 RAM, and supports
> booting from SD.
> 
> Signed-off-by: Tom McLeod <tom.mcleod@opalkelly.com>
> ---
>  arch/arm/dts/Makefile                              |    1 +
>  arch/arm/dts/zynq-syzygy-hub.dts                   |   72 ++
>  board/opalkelly/zynq/MAINTAINERS                   |    6 +
>  board/opalkelly/zynq/Makefile                      |    9 +
>  board/opalkelly/zynq/board.c                       |    1 +
>  .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c  | 1078 ++++++++++++++++++++
>  .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h  |  103 ++

Can you please look at board/topic/zynq/* and try to minimalize these
ps7_init* files?
At least remove functions related to silicon v1/v2?

+       if (si_ver == PCW_SILICON_VERSION_1) {
+               ps7_mio_init_data = ps7_mio_init_data_1_0;
+               ps7_pll_init_data = ps7_pll_init_data_1_0;
+               ps7_clock_init_data = ps7_clock_init_data_1_0;
+               ps7_ddr_init_data = ps7_ddr_init_data_1_0;
+               ps7_peripherals_init_data = ps7_peripherals_init_data_1_0;
+       } else if (si_ver == PCW_SILICON_VERSION_2) {
+               ps7_mio_init_data = ps7_mio_init_data_2_0;
+               ps7_pll_init_data = ps7_pll_init_data_2_0;
+               ps7_clock_init_data = ps7_clock_init_data_2_0;
+               ps7_ddr_init_data = ps7_ddr_init_data_2_0;
+               ps7_peripherals_init_data = ps7_peripherals_init_data_2_0;
+       } else {





>  configs/syzygy_hub_defconfig                       |   57 ++
>  include/configs/syzygy_hub.h                       |   72 ++
>  9 files changed, 1399 insertions(+)
>  create mode 100644 arch/arm/dts/zynq-syzygy-hub.dts
>  create mode 100644 board/opalkelly/zynq/MAINTAINERS
>  create mode 100644 board/opalkelly/zynq/Makefile
>  create mode 100644 board/opalkelly/zynq/board.c
>  create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
>  create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
>  create mode 100644 configs/syzygy_hub_defconfig
>  create mode 100644 include/configs/syzygy_hub.h
> 
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 1d6cee2..c15d94f 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -126,6 +126,7 @@ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
>  	zynq-zc706.dtb \
>  	zynq-zed.dtb \
>  	zynq-zybo.dtb \
> +	zynq-syzygy-hub.dtb \

as I see we should sort it :-)

>  	zynq-microzed.dtb \
>  	zynq-picozed.dtb \
>  	zynq-topic-miami.dtb \
> diff --git a/arch/arm/dts/zynq-syzygy-hub.dts b/arch/arm/dts/zynq-syzygy-hub.dts
> new file mode 100644
> index 0000000..c98ef01
> --- /dev/null
> +++ b/arch/arm/dts/zynq-syzygy-hub.dts
> @@ -0,0 +1,72 @@
> +/*
> + * SYZYGY Hub DTS
> + *
> + *  Copyright (C) 2011 - 2015 Xilinx
> + *  Copyright (C) 2017 Opal Kelly Inc.
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +/dts-v1/;
> +/include/ "zynq-7000.dtsi"
> +
> +/ {
> +	model = "SYZYGY Hub";
> +	compatible = "xlnx,zynq-7000";


compatible string should contain also information about your board.
It means you should record your prefix in Linux kernel first and then
use it here.

compatible = "opalkelly,syzygy-hub-vXX", "opalkelly,syzygy-hub",
"xlnx,zynq-7000";

The rest is good.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP SoCs


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170927/bcd89f7c/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board
  2017-09-27  5:50 ` Michal Simek
@ 2017-09-27 16:33   ` Tom McLeod
  0 siblings, 0 replies; 8+ messages in thread
From: Tom McLeod @ 2017-09-27 16:33 UTC (permalink / raw)
  To: u-boot

Hi Michal,

Thanks for looking at the patch! I'll try to incorporate the changes and
get a new patch out soon.

As far as the device tree Makefile, do you want me to sort it any
particular way or should I just add our board to the end of it? I can see
now it appears as though it might be sorted in a release date order or
something to that effect. I had thought originally that the order wasn't
overly important.

-Tom

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH v2] ARM: zynq: Add support for SYZYGY Hub board
  2017-09-12 18:05 [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board Tom McLeod
  2017-09-25 20:24 ` Tom McLeod
  2017-09-27  5:50 ` Michal Simek
@ 2017-09-28  0:53 ` Tom McLeod
  2017-10-10  5:45   ` Michal Simek
  2 siblings, 1 reply; 8+ messages in thread
From: Tom McLeod @ 2017-09-28  0:53 UTC (permalink / raw)
  To: u-boot

Add the Zynq-based SYZYGY Hub board from Opal Kelly. The board
contains a Xilinx Zynq xc7z012s SoC, 1GB DDR3 RAM, and supports
booting from SD.

Signed-off-by: Tom McLeod <tom.mcleod@opalkelly.com>
Cc: Michal Simek <monstr@monstr.eu>
CC: Albert Aribaud <albert.u.boot@aribaud.net>
---
Changes for v2:
  - Append syzygy-hub dtb to the end of the Zynq section in the dts Makefile
    as this appears to be the convention, if desired I can change this
  - Add an opalkelly,syzygy-hub compatible line to the syzygy hub dts
  - Clean up the ps7_init_gpl sources, removing old/unnecessary/unused code
    and eliminating all checkpatch warnings/errors

 arch/arm/dts/Makefile                              |   3 +-
 arch/arm/dts/zynq-syzygy-hub.dts                   |  72 ++++
 board/opalkelly/zynq/MAINTAINERS                   |   6 +
 board/opalkelly/zynq/Makefile                      |   9 +
 board/opalkelly/zynq/board.c                       |   1 +
 .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c  | 431 +++++++++++++++++++++
 .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h  |  82 ++++
 configs/syzygy_hub_defconfig                       |  57 +++
 include/configs/syzygy_hub.h                       |  72 ++++
 9 files changed, 732 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/zynq-syzygy-hub.dts
 create mode 100644 board/opalkelly/zynq/MAINTAINERS
 create mode 100644 board/opalkelly/zynq/Makefile
 create mode 100644 board/opalkelly/zynq/board.c
 create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
 create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
 create mode 100644 configs/syzygy_hub_defconfig
 create mode 100644 include/configs/syzygy_hub.h

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 762429c..1a6a8ff 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -135,7 +135,8 @@ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
 	zynq-zc770-xm010.dtb \
 	zynq-zc770-xm011.dtb \
 	zynq-zc770-xm012.dtb \
-	zynq-zc770-xm013.dtb
+	zynq-zc770-xm013.dtb \
+	zynq-syzygy-hub.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += \
 	zynqmp-ep108.dtb			\
 	zynqmp-zcu102-revA.dtb			\
diff --git a/arch/arm/dts/zynq-syzygy-hub.dts b/arch/arm/dts/zynq-syzygy-hub.dts
new file mode 100644
index 0000000..ebd08b4
--- /dev/null
+++ b/arch/arm/dts/zynq-syzygy-hub.dts
@@ -0,0 +1,72 @@
+/*
+ * SYZYGY Hub DTS
+ *
+ *  Copyright (C) 2011 - 2015 Xilinx
+ *  Copyright (C) 2017 Opal Kelly Inc.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+/dts-v1/;
+/include/ "zynq-7000.dtsi"
+
+/ {
+	model = "SYZYGY Hub";
+	compatible = "opalkelly,syzygy-hub", "xlnx,zynq-7000";
+
+	aliases {
+		ethernet0 = &gem0;
+		serial0 = &uart0;
+		mmc0 = &sdhci0;
+	};
+
+	memory at 0 {
+		device_type = "memory";
+		reg = <0x0 0x40000000>;
+	};
+
+	chosen {
+		bootargs = "";
+		stdout-path = "serial0:115200n8";
+	};
+
+	usb_phy0: phy0 {
+		#phy-cells = <0>;
+		compatible = "usb-nop-xceiv";
+		reset-gpios = <&gpio0 47 1>;
+	};
+};
+
+&clkc {
+	ps-clk-frequency = <50000000>;
+};
+
+&gem0 {
+	status = "okay";
+	phy-mode = "rgmii-id";
+	phy-handle = <&ethernet_phy>;
+
+	ethernet_phy: ethernet-phy at 0 {
+		reg = <0>;
+		device_type = "ethernet-phy";
+	};
+};
+
+&i2c1 {
+	status = "okay";
+};
+
+&sdhci0 {
+	u-boot,dm-pre-reloc;
+	status = "okay";
+};
+
+&uart0 {
+	u-boot,dm-pre-reloc;
+	status = "okay";
+};
+
+&usb0 {
+	status = "okay";
+	dr_mode = "otg";
+	usb-phy = <&usb_phy0>;
+};
diff --git a/board/opalkelly/zynq/MAINTAINERS b/board/opalkelly/zynq/MAINTAINERS
new file mode 100644
index 0000000..df4b9b6
--- /dev/null
+++ b/board/opalkelly/zynq/MAINTAINERS
@@ -0,0 +1,6 @@
+ZYNQ BOARD
+M:	Tom McLeod <tom.mcleod@opalkelly.com>
+S:	Maintained
+F:	board/opalkelly/zynq/
+F:	include/configs/syzygy_hub.h
+F:	configs/syzygy_hub_defconfig
diff --git a/board/opalkelly/zynq/Makefile b/board/opalkelly/zynq/Makefile
new file mode 100644
index 0000000..09fc788
--- /dev/null
+++ b/board/opalkelly/zynq/Makefile
@@ -0,0 +1,9 @@
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	:= board.o
+
+hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE))
+
+obj-$(CONFIG_SPL_BUILD) += $(hw-platform-y)/ps7_init_gpl.o
diff --git a/board/opalkelly/zynq/board.c b/board/opalkelly/zynq/board.c
new file mode 100644
index 0000000..a95c9d1
--- /dev/null
+++ b/board/opalkelly/zynq/board.c
@@ -0,0 +1 @@
+#include "../../xilinx/zynq/board.c"
diff --git a/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
new file mode 100644
index 0000000..7ae0475
--- /dev/null
+++ b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
@@ -0,0 +1,431 @@
+/******************************************************************************
+* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
+* (c) Copyright 2017 Opal Kelly Inc.
+*
+* SPDX-License-Identifier: GPL-2.0+
+ *****************************************************************************/
+
+#include "ps7_init_gpl.h"
+#include "asm/io.h"
+
+unsigned long ps7_pll_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U, 0x001772C0U),
+	EMIT_MASKWRITE(0XF8000100, 0x0007F000U, 0x0001A000U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000100, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000120, 0x1F003F30U, 0x1F000200U),
+	EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U, 0x001DB2C0U),
+	EMIT_MASKWRITE(0XF8000104, 0x0007F000U, 0x00015000U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000002U),
+	EMIT_MASKWRITE(0XF8000104, 0x00000010U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8000124, 0xFFF00003U, 0x0C200003U),
+	EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U, 0x001F42C0U),
+	EMIT_MASKWRITE(0XF8000108, 0x0007F000U, 0x00014000U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000010U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000001U, 0x00000000U),
+	EMIT_MASKPOLL(0XF800010C, 0x00000004U),
+	EMIT_MASKWRITE(0XF8000108, 0x00000010U, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+};
+
+unsigned long ps7_clock_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000128, 0x03F03F01U, 0x00203401U),
+	EMIT_MASKWRITE(0XF8000138, 0x00000011U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000140, 0x03F03F71U, 0x00100801U),
+	EMIT_MASKWRITE(0XF800014C, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000150, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000154, 0x00003F33U, 0x00000A01U),
+	EMIT_MASKWRITE(0XF8000168, 0x00003F31U, 0x00000501U),
+	EMIT_MASKWRITE(0XF8000170, 0x03F03F30U, 0x00400500U),
+	EMIT_MASKWRITE(0XF80001C4, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU, 0x01DC044DU),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+};
+
+unsigned long ps7_ddr_init_data_3_0[] = {
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006004, 0x0007FFFFU, 0x00001081U),
+	EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU, 0x03C0780FU),
+	EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU, 0x02001001U),
+	EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU, 0x00014001U),
+	EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU, 0x0004281AU),
+	EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU, 0x44E458D2U),
+	EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU, 0x720238E5U),
+	EMIT_MASKWRITE(0XF8006020, 0x7FDFFFFCU, 0x270872D0U),
+	EMIT_MASKWRITE(0XF8006024, 0x0FFFFFC3U, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006028, 0x00003FFFU, 0x00002007U),
+	EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU, 0x00040930U),
+	EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU, 0x000116D4U),
+	EMIT_MASKWRITE(0XF8006038, 0x00000003U, 0x00000000U),
+	EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU, 0x00000777U),
+	EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU, 0xFFF00000U),
+	EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU, 0x0F666666U),
+	EMIT_MASKWRITE(0XF8006048, 0x0003F03FU, 0x0003C008U),
+	EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU, 0x77010800U),
+	EMIT_MASKWRITE(0XF8006058, 0x00010000U, 0x00000000U),
+	EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU, 0x00005003U),
+	EMIT_MASKWRITE(0XF8006060, 0x000017FFU, 0x0000003EU),
+	EMIT_MASKWRITE(0XF8006064, 0x00021FE0U, 0x00020000U),
+	EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU, 0x00284141U),
+	EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU, 0x00001610U),
+	EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU, 0x00466111U),
+	EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU, 0x00032222U),
+	EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU, 0x10200802U),
+	EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU, 0x0690CB73U),
+	EMIT_MASKWRITE(0XF80060AC, 0x000001FFU, 0x000001FEU),
+	EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU, 0x1CFFFFFFU),
+	EMIT_MASKWRITE(0XF80060B4, 0x00000200U, 0x00000200U),
+	EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU, 0x00200066U),
+	EMIT_MASKWRITE(0XF80060C4, 0x00000003U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060C8, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060DC, 0x00000001U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80060F4, 0x0000000FU, 0x00000008U),
+	EMIT_MASKWRITE(0XF8006114, 0x000000FFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006118, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800611C, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006120, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF8006124, 0x7FFFFFCFU, 0x40000001U),
+	EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU, 0x00029000U),
+	EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU, 0x00000035U),
+	EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU, 0x00000080U),
+	EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU, 0x000000F9U),
+	EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU, 0x000000C0U),
+	EMIT_MASKWRITE(0XF8006190, 0x6FFFFEFEU, 0x00040080U),
+	EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU, 0x0001FC82U),
+	EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF8006208, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF800620C, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006210, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006214, 0x000703FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006218, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF800621C, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006220, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF8006224, 0x000F03FFU, 0x000003FFU),
+	EMIT_MASKWRITE(0XF80062A8, 0x00000FF5U, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU, 0x00005125U),
+	EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU, 0x000012A8U),
+	EMIT_MASKPOLL(0XF8000B74, 0x00002000U),
+	EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU, 0x00000081U),
+	EMIT_MASKPOLL(0XF8006054, 0x00000007U),
+	EMIT_EXIT(),
+};
+
+unsigned long ps7_mio_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU, 0x00000672U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU, 0x00000674U),
+	EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU, 0x0018C61CU),
+	EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU, 0x00F9861CU),
+	EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU, 0x00000260U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000001U, 0x00000001U),
+	EMIT_MASKWRITE(0XF8000B70, 0x00000021U, 0x00000020U),
+	EMIT_MASKWRITE(0XF8000B70, 0x07FEFFFFU, 0x00000823U),
+	EMIT_MASKWRITE(0XF8000700, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000704, 0x00003FFFU, 0x00001602U),
+	EMIT_MASKWRITE(0XF8000708, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800070C, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000710, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000714, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF8000718, 0x00003FFFU, 0x00000602U),
+	EMIT_MASKWRITE(0XF800071C, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000720, 0x00003FFFU, 0x00000600U),
+	EMIT_MASKWRITE(0XF8000724, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000728, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF800072C, 0x00003FFFU, 0x00001600U),
+	EMIT_MASKWRITE(0XF8000730, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000734, 0x00003FFFU, 0x00001640U),
+	EMIT_MASKWRITE(0XF8000738, 0x00003FFFU, 0x000016E1U),
+	EMIT_MASKWRITE(0XF800073C, 0x00003FFFU, 0x000016E0U),
+	EMIT_MASKWRITE(0XF8000740, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000744, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000748, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF800074C, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000750, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000754, 0x00003FFFU, 0x00001202U),
+	EMIT_MASKWRITE(0XF8000758, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800075C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000760, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000764, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000768, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF800076C, 0x00003FFFU, 0x00001203U),
+	EMIT_MASKWRITE(0XF8000770, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000774, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000778, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800077C, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000780, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000784, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000788, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800078C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000790, 0x00003FFFU, 0x00001205U),
+	EMIT_MASKWRITE(0XF8000794, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF8000798, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF800079C, 0x00003FFFU, 0x00001204U),
+	EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007B8, 0x00003F01U, 0x00001201U),
+	EMIT_MASKWRITE(0XF80007BC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU, 0x00001200U),
+	EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU, 0x00001280U),
+	EMIT_MASKWRITE(0XF8000830, 0x003F003FU, 0x002E0037U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+};
+
+unsigned long ps7_peripherals_init_data_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000B48, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B4C, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B50, 0x00000180U, 0x00000180U),
+	EMIT_MASKWRITE(0XF8000B54, 0x00000180U, 0x00000180U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_MASKWRITE(0XE0000034, 0x000000FFU, 0x00000006U),
+	EMIT_MASKWRITE(0XE0000018, 0x0000FFFFU, 0x0000007CU),
+	EMIT_MASKWRITE(0XE0000000, 0x000001FFU, 0x00000017U),
+	EMIT_MASKWRITE(0XE0000004, 0x000003FFU, 0x00000020U),
+	EMIT_MASKWRITE(0XE000D000, 0x00080000U, 0x00080000U),
+	EMIT_MASKWRITE(0XF8007000, 0x20000000U, 0x00000000U),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF0000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A008, 0xFFFFFFFFU, 0x7FFF8000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU, 0x00088000U),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370000U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKWRITE(0XE000A00C, 0x003F003FU, 0x00370008U),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_MASKDELAY(0XF8F00200, 1),
+	EMIT_EXIT(),
+};
+
+unsigned long ps7_post_config_3_0[] = {
+	EMIT_WRITE(0XF8000008, 0x0000DF0DU),
+	EMIT_MASKWRITE(0XF8000900, 0x0000000FU, 0x0000000FU),
+	EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU, 0x00000000U),
+	EMIT_WRITE(0XF8000004, 0x0000767BU),
+	EMIT_EXIT(),
+};
+
+unsigned long ps7_debug_3_0[] = {
+	EMIT_WRITE(0XF8898FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8899FB0, 0xC5ACCE55U),
+	EMIT_WRITE(0XF8809FB0, 0xC5ACCE55U),
+	EMIT_EXIT(),
+};
+
+unsigned long ps7_reset_apu_3_0[] = {
+	EMIT_MASKWRITE(0xF8000244, 0x00000022U, 0x00000022U),
+	EMIT_EXIT(),
+};
+
+#define PS7_MASK_POLL_TIME 100000000
+
+static inline void iowrite(unsigned long val, unsigned long addr)
+{
+	__raw_writel(val, addr);
+}
+
+static inline unsigned long ioread(unsigned long addr)
+{
+	return __raw_readl(addr);
+}
+
+int ps7_config(unsigned long *ps7_config_init)
+{
+	unsigned long *ptr = ps7_config_init;
+
+	unsigned long opcode;	/* current instruction .. */
+	unsigned long args[16];	/* no opcode has so many args ... */
+	int numargs;		/* number of arguments of this instruction */
+	int j;			/* general purpose index */
+
+	unsigned long addr;
+	unsigned long val, mask;
+
+	int finish = -1;	/* loop while this is negative ! */
+	int i = 0;		/* Timeout variable */
+
+	while (finish < 0) {
+		numargs = ptr[0] & 0xF;
+		opcode = ptr[0] >> 4;
+
+		for (j = 0; j < numargs; j++)
+			args[j] = ptr[j + 1];
+		ptr += numargs + 1;
+
+		switch (opcode) {
+		case OPCODE_EXIT:
+			finish = PS7_INIT_SUCCESS;
+			break;
+
+		case OPCODE_WRITE:
+			addr = args[0];
+			val = args[1];
+			iowrite(val, addr);
+			break;
+
+		case OPCODE_MASKWRITE:
+			addr = args[0];
+			mask = args[1];
+			val = args[2];
+			iowrite((val & mask) | (ioread(addr) & ~mask) , addr);
+			break;
+
+		case OPCODE_MASKPOLL:
+			addr = args[0];
+			mask = args[1];
+			i = 0;
+			while (!(ioread(addr) & mask)) {
+				if (i == PS7_MASK_POLL_TIME) {
+					finish = PS7_INIT_TIMEOUT;
+					break;
+				}
+				i++;
+			}
+			break;
+		case OPCODE_MASKDELAY:
+			addr = args[0];
+			mask = args[1];
+			int delay = get_number_of_cycles_for_delay(mask);
+			perf_reset_and_start_timer();
+			while (ioread(addr) < delay)
+				;
+			break;
+		default:
+			finish = PS7_INIT_CORRUPT;
+			break;
+		}
+	}
+	return finish;
+}
+
+int ps7_post_config(void)
+{
+	return ps7_config(ps7_post_config_3_0);
+}
+
+int ps7_debug(void)
+{
+	return ps7_config(ps7_debug_3_0);
+}
+
+int ps7_reset_apu(void)
+{
+	return ps7_config(ps7_reset_apu_3_0);
+}
+
+int ps7_init(void)
+{
+	int ret;
+
+	ret = ps7_reset_apu();
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_mio_init_data_3_0);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_pll_init_data_3_0);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_clock_init_data_3_0);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_ddr_init_data_3_0);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+
+	ret = ps7_config(ps7_peripherals_init_data_3_0);
+	if (ret != PS7_INIT_SUCCESS)
+		return ret;
+	return PS7_INIT_SUCCESS;
+}
+
+/* For delay calculation using global timer */
+
+/* start timer */
+void perf_start_clock(void)
+{
+	iowrite((1 << 0) | /* Timer Enable */
+		(1 << 3) | /* Auto-increment */
+		(0 << 8),  /* Pre-scale */
+		SCU_GLOBAL_TIMER_CONTROL);
+}
+
+/* stop timer and reset timer count regs */
+void perf_reset_clock(void)
+{
+	perf_disable_clock();
+	iowrite(0, SCU_GLOBAL_TIMER_COUNT_L32);
+	iowrite(0, SCU_GLOBAL_TIMER_COUNT_U32);
+}
+
+/* Compute mask for given delay in miliseconds*/
+int get_number_of_cycles_for_delay(unsigned int delay)
+{
+	return APU_FREQ * delay / (2 * 1000);
+}
+
+/* stop timer */
+void perf_disable_clock(void)
+{
+	iowrite(0, SCU_GLOBAL_TIMER_CONTROL);
+}
+
+void perf_reset_and_start_timer(void)
+{
+	perf_reset_clock();
+	perf_start_clock();
+}
diff --git a/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
new file mode 100644
index 0000000..ebb4773
--- /dev/null
+++ b/board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
@@ -0,0 +1,82 @@
+/******************************************************************************
+*
+* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved.
+*
+* SPDX-License-Identifier: GPL-2.0+
+*****************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define OPCODE_EXIT       0U
+#define OPCODE_CLEAR      1U
+#define OPCODE_WRITE      2U
+#define OPCODE_MASKWRITE  3U
+#define OPCODE_MASKPOLL   4U
+#define OPCODE_MASKDELAY  5U
+
+/* Encode number of arguments in last nibble */
+#define EMIT_EXIT()                   ((OPCODE_EXIT      << 4) | 0)
+#define EMIT_WRITE(addr, val)          ((OPCODE_WRITE     << 4) | 2) , addr, val
+#define EMIT_MASKWRITE(addr, mask, val) ((OPCODE_MASKWRITE << 4) | 3) ,\
+					addr, mask, val
+#define EMIT_MASKPOLL(addr, mask)      ((OPCODE_MASKPOLL  << 4) | 2) ,\
+					addr, mask
+#define EMIT_MASKDELAY(addr, mask)      ((OPCODE_MASKDELAY << 4) | 2) ,\
+					addr, mask
+
+/* Returns codes  of PS7_Init */
+#define PS7_INIT_SUCCESS   (0)
+#define PS7_INIT_CORRUPT   (1)
+#define PS7_INIT_TIMEOUT   (2)
+#define PS7_POLL_FAILED_DDR_INIT (3)
+#define PS7_POLL_FAILED_DMA      (4)
+#define PS7_POLL_FAILED_PLL      (5)
+
+/* Freq of all peripherals */
+
+#define APU_FREQ  650000000
+#define DDR_FREQ  525000000
+#define DCI_FREQ  10096154
+#define QSPI_FREQ  200000000
+#define SMC_FREQ  10000000
+#define ENET0_FREQ  125000000
+#define ENET1_FREQ  10000000
+#define USB0_FREQ  60000000
+#define USB1_FREQ  60000000
+#define SDIO_FREQ  100000000
+#define UART_FREQ  100000000
+#define SPI_FREQ  10000000
+#define I2C_FREQ  108333336
+#define WDT_FREQ  108333336
+#define TTC_FREQ  50000000
+#define CAN_FREQ  10000000
+#define PCAP_FREQ  200000000
+#define TPIU_FREQ  200000000
+#define FPGA0_FREQ  50000000
+#define FPGA1_FREQ  10000000
+#define FPGA2_FREQ  10000000
+#define FPGA3_FREQ  10000000
+
+
+/* For delay calculation using global registers*/
+#define SCU_GLOBAL_TIMER_COUNT_L32	0xF8F00200
+#define SCU_GLOBAL_TIMER_COUNT_U32	0xF8F00204
+#define SCU_GLOBAL_TIMER_CONTROL	0xF8F00208
+#define SCU_GLOBAL_TIMER_AUTO_INC	0xF8F00218
+
+int ps7_config(unsigned long *);
+int ps7_init(void);
+int ps7_post_config(void);
+int ps7_debug(void);
+
+void perf_start_clock(void);
+void perf_disable_clock(void);
+void perf_reset_clock(void);
+void perf_reset_and_start_timer(void);
+int get_number_of_cycles_for_delay(unsigned int delay);
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/configs/syzygy_hub_defconfig b/configs/syzygy_hub_defconfig
new file mode 100644
index 0000000..28adf87
--- /dev/null
+++ b/configs/syzygy_hub_defconfig
@@ -0,0 +1,57 @@
+CONFIG_ARM=y
+CONFIG_SYS_VENDOR="opalkelly"
+CONFIG_SYS_CONFIG_NAME="syzygy_hub"
+CONFIG_ARCH_ZYNQ=y
+CONFIG_SYS_TEXT_BASE=0x4000000
+CONFIG_DEFAULT_DEVICE_TREE="zynq-syzygy-hub"
+CONFIG_DEBUG_UART=y
+CONFIG_FIT=y
+CONFIG_FIT_SIGNATURE=y
+CONFIG_FIT_VERBOSE=y
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_SPL=y
+CONFIG_SPL_OS_BOOT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="Zynq> "
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_EEPROM=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_FPGA_LOADBP=y
+CONFIG_CMD_FPGA_LOADFS=y
+CONFIG_CMD_FPGA_LOADMK=y
+CONFIG_CMD_FPGA_LOADP=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_EMBED=y
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ZYNQ=y
+CONFIG_ZYNQ_GEM=y
+CONFIG_DEBUG_UART_ZYNQ=y
+CONFIG_DEBUG_UART_BASE=0xe0000000
+CONFIG_DEBUG_UART_CLOCK=50000000
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_ULPI_VIEWPORT=y
+CONFIG_USB_ULPI=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="Xilinx"
+CONFIG_G_DNL_VENDOR_NUM=0x03FD
+CONFIG_G_DNL_PRODUCT_NUM=0x0300
diff --git a/include/configs/syzygy_hub.h b/include/configs/syzygy_hub.h
new file mode 100644
index 0000000..4147b45
--- /dev/null
+++ b/include/configs/syzygy_hub.h
@@ -0,0 +1,72 @@
+/*
+ * (C) Copyright 2012 Xilinx
+ * (C) Copyright 2017 Opal Kelly Inc.
+ *
+ * Configuration settings for the SYZYGY Hub development board
+ * See zynq-common.h for Zynq common configs
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef __CONFIG_SYZYGY_HUB_H
+#define __CONFIG_SYZYGY_HUB_H
+
+#define CONFIG_ZYNQ_I2C1
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+#define CONFIG_ZYNQ_GEM_EEPROM_ADDR    0x57
+#define CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET 0xFA
+
+#define CONFIG_EXTRA_ENV_SETTINGS       \
+	"fit_image=fit.itb\0"		\
+	"bitstream_image=download.bit\0"    \
+	"loadbit_addr=0x1000000\0"      \
+	"load_addr=0x2000000\0"		\
+	"fit_size=0x800000\0"		\
+	"flash_off=0x100000\0"		\
+	"nor_flash_off=0xE2100000\0"	\
+	"fdt_high=0x20000000\0"		\
+	"initrd_high=0x20000000\0"	\
+	"loadbootenv_addr=0x2000000\0"  \
+	"fdt_addr_r=0x1f00000\0"        \
+	"pxefile_addr_r=0x2000000\0"    \
+	"kernel_addr_r=0x2000000\0"     \
+	"scriptaddr=0x3000000\0"        \
+	"ramdisk_addr_r=0x3100000\0"    \
+	"bootenv=uEnv.txt\0" \
+	"bootenv_dev=mmc\0" \
+	"loadbootenv=load ${bootenv_dev} 0 ${loadbootenv_addr} ${bootenv}\0" \
+	"importbootenv=echo Importing environment from ${bootenv_dev} ...; " \
+		"env import -t ${loadbootenv_addr} $filesize\0" \
+	"bootenv_existence_test=test -e ${bootenv_dev} 0 /${bootenv}\0" \
+	"setbootenv=if env run bootenv_existence_test; then " \
+			"if env run loadbootenv; then " \
+				"env run importbootenv; " \
+			"fi; " \
+		"fi; \0" \
+	"sd_loadbootenv=set bootenv_dev mmc && " \
+			"run setbootenv \0" \
+	"usb_loadbootenv=set bootenv_dev usb && usb start && run setbootenv\0" \
+	"preboot=if test $modeboot = sdboot; then " \
+			"run sd_loadbootenv; " \
+			"echo Checking if uenvcmd is set ...; " \
+			"if test -n $uenvcmd; then " \
+				"echo Running uenvcmd ...; " \
+				"run uenvcmd; " \
+			"fi; " \
+		"fi; \0" \
+	"sdboot=echo Copying FPGA Bitstream from SD to RAM... && " \
+		"load mmc 0 ${loadbit_addr} ${bitstream_image} && " \
+		"echo Programming FPGA... && " \
+		"fpga loadb 0 ${loadbit_addr} ${filesize} && " \
+		"echo Copying FIT from SD to RAM... && " \
+		"load mmc 0 ${load_addr} ${fit_image} && " \
+		"bootm ${load_addr}\0" \
+	"jtagboot=echo TFTPing FIT to RAM... && " \
+		"tftpboot ${load_addr} ${fit_image} && " \
+		"bootm ${load_addr}\0" \
+		DFU_ALT_INFO \
+		BOOTENV
+
+#include <configs/zynq-common.h>
+
+#endif /* __CONFIG_SYZYGY_HUB_H */
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH v2] ARM: zynq: Add support for SYZYGY Hub board
  2017-09-28  0:53 ` [U-Boot] [PATCH v2] " Tom McLeod
@ 2017-10-10  5:45   ` Michal Simek
  2017-11-02 16:42     ` Tom McLeod
  0 siblings, 1 reply; 8+ messages in thread
From: Michal Simek @ 2017-10-10  5:45 UTC (permalink / raw)
  To: u-boot

On 28.9.2017 02:53, Tom McLeod wrote:
> Add the Zynq-based SYZYGY Hub board from Opal Kelly. The board
> contains a Xilinx Zynq xc7z012s SoC, 1GB DDR3 RAM, and supports
> booting from SD.
> 
> Signed-off-by: Tom McLeod <tom.mcleod@opalkelly.com>
> Cc: Michal Simek <monstr@monstr.eu>
> CC: Albert Aribaud <albert.u.boot@aribaud.net>
> ---
> Changes for v2:
>   - Append syzygy-hub dtb to the end of the Zynq section in the dts Makefile
>     as this appears to be the convention, if desired I can change this
>   - Add an opalkelly,syzygy-hub compatible line to the syzygy hub dts
>   - Clean up the ps7_init_gpl sources, removing old/unnecessary/unused code
>     and eliminating all checkpatch warnings/errors
> 
>  arch/arm/dts/Makefile                              |   3 +-
>  arch/arm/dts/zynq-syzygy-hub.dts                   |  72 ++++
>  board/opalkelly/zynq/MAINTAINERS                   |   6 +
>  board/opalkelly/zynq/Makefile                      |   9 +
>  board/opalkelly/zynq/board.c                       |   1 +
>  .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c  | 431 +++++++++++++++++++++
>  .../opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h  |  82 ++++
>  configs/syzygy_hub_defconfig                       |  57 +++
>  include/configs/syzygy_hub.h                       |  72 ++++
>  9 files changed, 732 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/dts/zynq-syzygy-hub.dts
>  create mode 100644 board/opalkelly/zynq/MAINTAINERS
>  create mode 100644 board/opalkelly/zynq/Makefile
>  create mode 100644 board/opalkelly/zynq/board.c
>  create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.c
>  create mode 100644 board/opalkelly/zynq/zynq-syzygy-hub/ps7_init_gpl.h
>  create mode 100644 configs/syzygy_hub_defconfig
>  create mode 100644 include/configs/syzygy_hub.h
> 
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 762429c..1a6a8ff 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -135,7 +135,8 @@ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
>  	zynq-zc770-xm010.dtb \
>  	zynq-zc770-xm011.dtb \
>  	zynq-zc770-xm012.dtb \
> -	zynq-zc770-xm013.dtb
> +	zynq-zc770-xm013.dtb \
> +	zynq-syzygy-hub.dtb
>  dtb-$(CONFIG_ARCH_ZYNQMP) += \
>  	zynqmp-ep108.dtb			\
>  	zynqmp-zcu102-revA.dtb			\
> diff --git a/arch/arm/dts/zynq-syzygy-hub.dts b/arch/arm/dts/zynq-syzygy-hub.dts
> new file mode 100644
> index 0000000..ebd08b4
> --- /dev/null
> +++ b/arch/arm/dts/zynq-syzygy-hub.dts
> @@ -0,0 +1,72 @@
> +/*
> + * SYZYGY Hub DTS
> + *
> + *  Copyright (C) 2011 - 2015 Xilinx
> + *  Copyright (C) 2017 Opal Kelly Inc.
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +/dts-v1/;
> +/include/ "zynq-7000.dtsi"
> +
> +/ {
> +	model = "SYZYGY Hub";
> +	compatible = "opalkelly,syzygy-hub", "xlnx,zynq-7000";

Patch looks good but only this prefix needs to be added to the Linux
kernel. It should be present in this file. Please send the patch and
when it is added to linux-next I will add your patch

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/Documentation/devicetree/bindings/vendor-prefixes.txt?h=next-20171009

Thanks,
Michal
-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP SoCs


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171010/6307e187/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH v2] ARM: zynq: Add support for SYZYGY Hub board
  2017-10-10  5:45   ` Michal Simek
@ 2017-11-02 16:42     ` Tom McLeod
  2017-11-06 12:21       ` Michal Simek
  0 siblings, 1 reply; 8+ messages in thread
From: Tom McLeod @ 2017-11-02 16:42 UTC (permalink / raw)
  To: u-boot

Hi Michal,

>Patch looks good but only this prefix needs to be added to the Linux
>kernel. It should be present in this file. Please send the patch and
>when it is added to linux-next I will add your patch

It looks like our vendor prefix has been accepted into linux-next.

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/
Documentation/devicetree/bindings/vendor-prefixes.txt?h=master

Please let me know if you need anything else to apply our u-boot patch.

Thanks,
-Tom

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH v2] ARM: zynq: Add support for SYZYGY Hub board
  2017-11-02 16:42     ` Tom McLeod
@ 2017-11-06 12:21       ` Michal Simek
  0 siblings, 0 replies; 8+ messages in thread
From: Michal Simek @ 2017-11-06 12:21 UTC (permalink / raw)
  To: u-boot

Hi,

On 2.11.2017 17:42, Tom McLeod wrote:
> Hi Michal,
> 
>> Patch looks good but only this prefix needs to be added to the Linux
>> kernel. It should be present in this file. Please send the patch and
>> when it is added to linux-next I will add your patch
> 
> It looks like our vendor prefix has been accepted into linux-next.
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/
> Documentation/devicetree/bindings/vendor-prefixes.txt?h=master
> 
> Please let me know if you need anything else to apply our u-boot patch.

Wonderful. I have updated defconfig to be aligned with the latest
version and I have applied this patch to my tree.

http://git.denx.de/?p=u-boot/u-boot-microblaze.git;a=summary

Thanks,
Michal

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-11-06 12:21 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-12 18:05 [U-Boot] [PATCH] ARM: zynq: Add support for SYZYGY Hub board Tom McLeod
2017-09-25 20:24 ` Tom McLeod
2017-09-27  5:50 ` Michal Simek
2017-09-27 16:33   ` Tom McLeod
2017-09-28  0:53 ` [U-Boot] [PATCH v2] " Tom McLeod
2017-10-10  5:45   ` Michal Simek
2017-11-02 16:42     ` Tom McLeod
2017-11-06 12:21       ` Michal Simek

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.