]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
arm64: zynqmp: Add support for zcu104 revC
authorMichal Simek <michal.simek@xilinx.com>
Wed, 6 Dec 2017 09:38:47 +0000 (10:38 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 31 Jan 2018 12:15:42 +0000 (13:15 +0100)
There is a change on i2c bus where u97 i2c gpio expander is directly
connected to i2c1 instead of via MUX.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/dts/Makefile
arch/arm/dts/zynqmp-zcu104-revC.dts [new file with mode: 0644]
board/xilinx/zynqmp/zynqmp-zcu104-revC [new symlink]
configs/xilinx_zynqmp_zcu104_revC_defconfig [new file with mode: 0644]

index 8c3c99ab91023c570baa13af6f9e32196700ae23..f4549e99639d9e8a9c9d6c9d925e9c13b80cb313 100644 (file)
@@ -172,6 +172,7 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
        zynqmp-zcu102-revB.dtb                  \
        zynqmp-zcu102-rev1.0.dtb                \
        zynqmp-zcu104-revA.dtb                  \
+       zynqmp-zcu104-revC.dtb                  \
        zynqmp-zcu106-revA.dtb                  \
        zynqmp-zc1232-revA.dtb                  \
        zynqmp-zc1254-revA.dtb                  \
diff --git a/arch/arm/dts/zynqmp-zcu104-revC.dts b/arch/arm/dts/zynqmp-zcu104-revC.dts
new file mode 100644 (file)
index 0000000..3f98c37
--- /dev/null
@@ -0,0 +1,518 @@
+/*
+ * dts file for Xilinx ZynqMP ZCU104
+ *
+ * (C) Copyright 2017, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU104 RevC";
+       compatible = "xlnx,zynqmp-zcu104-revC", "xlnx,zynqmp-zcu104", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem3;
+               gpio0 = &gpio;
+               i2c0 = &i2c1;
+               mmc0 = &sdhci1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+};
+
+&can1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
+};
+
+&dcc {
+       status = "okay";
+};
+
+&gem3 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
+       phy0: phy@c {
+               reg = <0xc>;
+               ti,rx-internal-delay = <0x8>;
+               ti,tx-internal-delay = <0xa>;
+               ti,fifo-depth = <0x1>;
+               ti,rxctrl-strap-worka;
+       };
+};
+
+&gpio {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+
+       tca6416_u97: gpio@21 {
+               compatible = "ti,tca6416";
+               reg = <0x21>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               /*
+                 * IRQ not connected
+                 * Lines:
+                 * 0 - IRPS5401_ALERT_B
+                 * 1 - HDMI_8T49N241_INT_ALM
+                 * 2 - MAX6643_OT_B
+                 * 3 - MAX6643_FANFAIL_B
+                 * 5 - IIC_MUX_RESET_B
+                 * 6 - GEM3_EXP_RESET_B
+                 * 7 - FMC_LPC_PRSNT_M2C_B
+                 * 4, 10 - 17 - not connected
+                 */
+       };
+
+       /* Another connection to this bus via PL i2c via PCA9306 - u45 */
+       i2cswitch@74 { /* u34 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x74>;
+               i2c@0 { /* i2c mw 74 0 1 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * IIC_EEPROM 1kB memory which uses 256B blocks
+                        * where every block has different address.
+                        *    0 - 256B address 0x54
+                        * 256B - 512B address 0x55
+                        * 512B - 768B address 0x56
+                        * 768B - 1024B address 0x57
+                        */
+                       eeprom@54 { /* u23 */
+                               compatible = "at,24c08";
+                               reg = <0x54>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                       };
+               };
+
+               i2c@1 { /* i2c mw 74 0 2 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       clock_8t49n287: 8t49n287@6c { /* 8T49N287 - u182 */
+                               compatible = "idt,8t49n287";
+                               reg = <0x6c>;
+                       };
+               };
+
+               i2c@2 { /* i2c mw 74 0 4 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       irps5401_43: irps54012@43 { /* IRPS5401 - u175 */
+                               #clock-cells = <0>;
+                               compatible = "infineon,irps5401";
+                               reg = <0x43>;
+                       };
+                       irps5401_4d: irps54012@4d { /* IRPS5401 - u180 */
+                               #clock-cells = <0>;
+                               compatible = "infineon,irps5401";
+                               reg = <0x4d>;
+                       };
+               };
+
+               i2c@4 { /* i2c mw 74 0 8 */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               i2c@5 { /* i2c mw 74 0 10 */ /* FMC_LPC */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               i2c@7 { /* i2c mw 74 0 14 */ /* DDR4_SODIMM */
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+
+               /* 3, 6 not connected */
+       };
+};
+
+&pinctrl0 {
+       status = "okay";
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               mux-cd {
+                       groups = "sdio1_0_cd_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_0_cd_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       io-standard = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80"; /* n25q512a 128MiB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+               partition@qspi-fsbl-uboot { /* for testing purpose */
+                       label = "qspi-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@qspi-linux { /* for testing purpose */
+                       label = "qspi-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@qspi-device-tree { /* for testing purpose */
+                       label = "qspi-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@qspi-rootfs { /* for testing purpose */
+                       label = "qspi-rootfs";
+                       reg = <0x620000 0x5E0000>;
+               };
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+       /* SATA OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&lane3 PHY_TYPE_SATA 1 1 125000000>;
+};
+
+/* SD1 with level shifter */
+&sdhci1 {
+       status = "okay";
+       no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio_bank = <1>;
+       disable-wp;
+};
+
+&serdes {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "host";
+       snps,usb3_lpm_capable;
+       phy-names = "usb3-phy";
+       phys = <&lane2 PHY_TYPE_USB3 0 2 26000000>;
+       maximum-speed = "super-speed";
+};
+
+&watchdog0 {
+       status = "okay";
+};
+
+&xilinx_ams {
+       status = "okay";
+};
+
+&ams_ps {
+       status = "okay";
+};
+
+&ams_pl {
+       status = "okay";
+};
+
+&xilinx_drm {
+       status = "okay";
+};
+
+&xlnx_dp {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&lane1 PHY_TYPE_DP 0 3 27000000>, <&lane0 PHY_TYPE_DP 1 3 27000000>;
+};
+
+&xlnx_dp_sub {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm0 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_pcm1 {
+       status = "okay";
+};
+
+&xlnx_dp_snd_card {
+       status = "okay";
+};
+
+&xlnx_dp_snd_codec0 {
+       status = "okay";
+};
+
+&xlnx_dpdma {
+       status = "okay";
+};
diff --git a/board/xilinx/zynqmp/zynqmp-zcu104-revC b/board/xilinx/zynqmp/zynqmp-zcu104-revC
new file mode 120000 (symlink)
index 0000000..529e18f
--- /dev/null
@@ -0,0 +1 @@
+zynqmp-zcu104-revA
\ No newline at end of file
diff --git a/configs/xilinx_zynqmp_zcu104_revC_defconfig b/configs/xilinx_zynqmp_zcu104_revC_defconfig
new file mode 100644 (file)
index 0000000..f9baa6b
--- /dev/null
@@ -0,0 +1,95 @@
+CONFIG_ARM=y
+CONFIG_SYS_CONFIG_NAME="xilinx_zynqmp_zcu104"
+CONFIG_ARCH_ZYNQMP=y
+CONFIG_SYS_TEXT_BASE=0x8000000
+CONFIG_SYS_MALLOC_F_LEN=0x8000
+CONFIG_IDENT_STRING=" Xilinx ZynqMP ZCU104 revC"
+CONFIG_ZYNQMP_QSPI=y
+CONFIG_ZYNQMP_USB=y
+CONFIG_SPI_GENERIC=y
+CONFIG_DEFAULT_DEVICE_TREE="zynqmp-zcu104-revC"
+CONFIG_DEBUG_UART=y
+CONFIG_AHCI=y
+CONFIG_DISTRO_DEFAULTS=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_SPL_LOAD_FIT=y
+CONFIG_BOOTCOMMAND="run $modeboot"
+# CONFIG_DISPLAY_CPUINFO is not set
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_SPL=y
+CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_RAM_SUPPORT=y
+CONFIG_SPL_RAM_DEVICE=y
+CONFIG_SYS_PROMPT="ZynqMP> "
+CONFIG_CMD_EEPROM=y
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_CLK=y
+CONFIG_CMD_DFU=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_FPGA_LOADBP=y
+CONFIG_CMD_FPGA_LOADP=y
+CONFIG_CMD_FPGA_LOAD_SECURE=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_TIME=y
+CONFIG_CMD_TIMER=y
+CONFIG_CMD_AES=y
+CONFIG_CMD_EXT4_WRITE=y
+# CONFIG_SPL_ISO_PARTITION is not set
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_OF_EMBED=y
+CONFIG_ENV_IS_IN_FAT=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SCSI_AHCI=y
+CONFIG_SATA_CEVA=y
+CONFIG_CLK_ZYNQMP=y
+CONFIG_DFU_RAM=y
+CONFIG_FPGA_XILINX=y
+CONFIG_FPGA_ZYNQMPPL=y
+CONFIG_DM_GPIO=y
+CONFIG_CMD_PCA953X=y
+CONFIG_MISC=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ZYNQ=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_BAR=y
+CONFIG_SF_DUAL_FLASH=y
+CONFIG_SPI_FLASH_ISSI=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_WINBOND=y
+# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+CONFIG_DM_ETH=y
+CONFIG_PHY_GIGE=y
+CONFIG_ZYNQ_GEM=y
+CONFIG_SCSI=y
+CONFIG_DM_SCSI=y
+CONFIG_DEBUG_UART_ZYNQ=y
+CONFIG_DEBUG_UART_BASE=0xff000000
+CONFIG_DEBUG_UART_CLOCK=100000000
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_ZYNQ_SERIAL=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_XHCI_ZYNQMP=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_GADGET=y
+CONFIG_USB_DWC3_GENERIC=y
+CONFIG_USB_ULPI_VIEWPORT=y
+CONFIG_USB_ULPI=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_EFI_LOADER_BOUNCE_BUFFER=y