fdt: msys: enabled Device Tree and BOOTZ support
Enabled Device Tree manipulation support for MSYS platforms:
- added dtb file and update settings: currently skip fdt update
- wrapped fdt boardsetup unit routines with proper CONFIG defines:
CONFIG_PIC_GPIO, MV_INCLUDE_SATA, MV_INCLUDE_USB, MV_INCLUDE_USB_DEVICE
- added missing board routines and enums in msys_family:
* mvBoardPortTypeGet, mvBoardGetDevBusNum, mvBoardSet/GetDevState,
mvBoardCompatibleNameGet, mvCpuIfMbusWindowSet
* updated Board Flash tables fields: status, busNum
Change-Id: Ie228f3d58fccc67ef85fe1395b8ab263230e9614
Signed-off-by: Omri Itach <omrii@marvell.com>
Reviewed-on: http://vgitil04.il.marvell.com:8080/20455
Tested-by: Star_Automation <star@marvell.com>
Reviewed-by: Hanna Hawa <hannah@marvell.com>
diff --git a/board/mv_ebu/common/USP/mv_fdt.c b/board/mv_ebu/common/USP/mv_fdt.c
index 016f251..b17c4d5 100644
--- a/board/mv_ebu/common/USP/mv_fdt.c
+++ b/board/mv_ebu/common/USP/mv_fdt.c
@@ -101,13 +101,19 @@
static int mv_fdt_find_node(void *fdt, const char *name);
static int mv_fdt_board_compatible_name_update(void *fdt);
static int mv_fdt_update_serial(void *fdt);
+#ifdef CONFIG_PIC_GPIO
static int mv_fdt_update_pic_gpio(void *fdt);
+#endif
static int mv_fdt_update_cpus(void *fdt);
static int mv_fdt_update_pex(void *fdt);
+#ifdef MV_INCLUDE_SATA
static int mv_fdt_update_sata(void *fdt);
+#endif
+#ifdef MV_INCLUDE_USB
static int mv_fdt_update_usb(void *fdt, MV_UNIT_ID unitType);
static int mv_fdt_update_usb2(void *fdt);
static int mv_fdt_update_usb3(void *fdt);
+#endif
static int mv_fdt_update_ethnum(void *fdt);
static int mv_fdt_update_flash(void *fdt);
static int mv_fdt_set_node_prop(void *fdt, const char *node, const char *prop, const char *prop_val);
@@ -134,7 +140,9 @@
#ifdef MV_USB_VBUS_CYCLE
static int mv_fdt_update_usb_vbus(void *fdt);
#endif
+#ifdef MV_INCLUDE_USB_DEVICE
static int mv_fdt_update_usb_device(void *fdt);
+#endif
#if 0 /* not compiled, since this routine is currently not in use */
static int mv_fdt_remove_prop(void *fdt, const char *path,
@@ -145,9 +153,13 @@
update_fnc_t *update_sequence[] = {
mv_fdt_update_cpus, /* Get number of CPUs and update dt */
mv_fdt_update_pex, /* Get number of active PEX port and update DT */
+#ifdef MV_INCLUDE_SATA
mv_fdt_update_sata, /* Get number of active SATA units and update DT */
+#endif
+#ifdef MV_INCLUDE_USB
mv_fdt_update_usb2, /* Get number of active USB2.0 units and update DT */
mv_fdt_update_usb3, /* Get number of active USB3.0 units and update DT */
+#endif
mv_fdt_update_ethnum, /* Get number of active ETH port and update DT */
#ifdef CONFIG_MV_SDHCI
mv_fdt_update_sdhci, /* Update SDHCI driver settings in DT */
@@ -166,14 +178,18 @@
mv_fdt_update_pinctrl, /* Update pinctrl driver settings in DT */
mv_fdt_board_compatible_name_update, /* Update compatible (board name) in DT */
mv_fdt_update_serial, /* Update serial/UART nodes in DT */
+#ifdef CONFIG_PIC_GPIO
mv_fdt_update_pic_gpio,
+#endif
#ifdef MV_INCLUDE_AUDIO
mv_fdt_update_audio, /* Update audio-controller+sound nodes in DT */
#endif
#ifdef MV_INCLUDE_SWITCH
mv_fdt_update_switch,
#endif
+#ifdef MV_INCLUDE_USB_DEVICE
mv_fdt_update_usb_device,
+#endif
NULL,
};
@@ -401,6 +417,7 @@
return 0;
}
+#ifdef MV_INCLUDE_SATA
/*******************************************************************************
* mv_fdt_update_sata
*
@@ -443,6 +460,7 @@
return 0;
}
+#endif /* MV_INCLUDE_SATA */
#ifdef MV_INCLUDE_TDM
/*******************************************************************************
@@ -822,7 +840,7 @@
}
return 0;
}
-
+#ifdef MV_INCLUDE_USB
/*******************************************************************************
* mv_fdt_update_usb
*
@@ -885,7 +903,9 @@
{
return mv_fdt_update_usb(fdt, USB3_UNIT_ID);
}
+#endif /* MV_INCLUDE_USB */
+#ifdef MV_INCLUDE_USB_DEVICE
/*******************************************************************************
* mv_fdt_update_usb_device
*
@@ -937,7 +957,7 @@
}
return 0;
}
-
+#endif /* MV_INCLUDE_USB_DEVICE */
/*******************************************************************************
* mv_fdt_update_pinctrl
*
@@ -1238,7 +1258,6 @@
return 0;
}
}
-
return 0;
}
@@ -1709,7 +1728,7 @@
return 0;
}
-
+#ifdef CONFIG_PIC_GPIO
/*******************************************************************************
* mv_fdt_update_pic_gpio
*
@@ -1825,8 +1844,9 @@
mv_fdt_dprintf("Set '%s' property in '%s' node\n", ctrl_gpios_prop, pm_picNode);
return 0;
-}
+}
+#endif /* CONFIG_PIC_GPIO */
#ifdef MV_INCLUDE_SWITCH
/*******************************************************************************
* mv_fdt_update_switch
diff --git a/board/mv_ebu/common/USP/mv_main.c b/board/mv_ebu/common/USP/mv_main.c
index 2bc8aa4..2aaa439 100755
--- a/board/mv_ebu/common/USP/mv_main.c
+++ b/board/mv_ebu/common/USP/mv_main.c
@@ -98,7 +98,7 @@
#else
#define DB(x)
#endif
-
+extern void fdt_env_setup(char *fdtfile, MV_BOOL runUpdate);
extern int display_dram_config(int print);
int late_print_cpuinfo(void);
/* CPU address decode table. */
@@ -465,6 +465,13 @@
envSetDefault("enaLPAE", "no");;
#endif
+ /* Flatten Device Tree environment setup */
+#ifdef CONFIG_CUSTOMER_BOARD_SUPPORT
+ fdt_env_setup("msys.dtb", MV_FALSE); /* static setup: Skip DT update for customer */
+#else
+ fdt_env_setup("msys.dtb", MV_FALSE); /* dynamic setup: run DT update (false since not supported yet) */
+#endif
+
#if (CONFIG_BOOTDELAY >= 0)
env = getenv("bootcmd");
if(!env)
diff --git a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c
index b231f58..cbbde7c 100755
--- a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c
+++ b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c
@@ -377,6 +377,30 @@
}
/*******************************************************************************
+* mvBoardPortTypeGet
+*
+* DESCRIPTION:
+* This routine returns port type
+*
+* INPUT:
+* ethPortNum - Ethernet port number.
+*
+* OUTPUT:
+* None
+*
+* RETURN:
+* Mode of the port
+*
+*******************************************************************************/
+MV_U32 mvBoardPortTypeGet(MV_U32 ethPortNum)
+{
+ if (mvBoardIsPortInSgmii(ethPortNum))
+ return MV_PORT_TYPE_SGMII;
+ else
+ return MV_PORT_TYPE_RGMII;
+}
+
+/*******************************************************************************
* mvBoardIsPortInMii
*
* DESCRIPTION:
@@ -1042,6 +1066,92 @@
}
/*******************************************************************************
+* mvBoardGetDevBusNum
+*
+* DESCRIPTION:
+* Return the device's bus number.
+*
+* INPUT:
+* devIndex - The device sequential number on the board
+* devType - The device type ( Flash,RTC , etc .. )
+*
+* OUTPUT:
+* None.
+*
+* RETURN:
+* If the device is found on the board the then the functions returns the
+* dev bus number else the function returns 0xFFFFFFFF
+*
+*******************************************************************************/
+MV_U32 mvBoardGetDevBusNum(MV_32 devNum, MV_BOARD_DEV_CLASS devClass)
+{
+ MV_DEV_CS_INFO *devEntry = mvBoardGetDevEntry(devNum, devClass);
+
+ if (devEntry)
+ return devEntry->busNum;
+
+ return 0xFFFFFFFF;
+}
+
+/*******************************************************************************
+* mvBoardGetDevState
+*
+* DESCRIPTION:
+* Return the device's activity state.
+*
+* INPUT:
+* devIndex - The device sequential number on the board
+* devType - The device type ( Flash,RTC , etc .. )
+*
+* OUTPUT:
+* None.
+*
+* RETURN:
+* If the device is found on the board the then the functions returns the
+* dev activity state else the function returns 0xFFFFFFFF
+*
+*******************************************************************************/
+MV_BOOL mvBoardGetDevState(MV_32 devNum, MV_BOARD_DEV_CLASS devClass)
+{
+ MV_DEV_CS_INFO *devEntry = mvBoardGetDevEntry(devNum, devClass);
+
+ if (devEntry)
+ return devEntry->active;
+
+ return 0xFFFFFFFF;
+}
+
+/*******************************************************************************
+* mvBoardSetDevState
+*
+* DESCRIPTION:
+* Sets the device's activity state.
+*
+* INPUT:
+* devIndex - The device sequential number on the board
+* devType - The device type ( Flash,RTC , etc .. )
+* newState - requested deevice state
+*
+* OUTPUT:
+* None.
+*
+* RETURN:
+* If the device is found on the board the then the functions returns
+* MV_OK else MV_ERROR
+*
+*******************************************************************************/
+MV_STATUS mvBoardSetDevState(MV_32 devNum, MV_BOARD_DEV_CLASS devClass, MV_BOOL newState)
+{
+ MV_DEV_CS_INFO *devEntry = mvBoardGetDevEntry(devNum, devClass);
+
+ if (devEntry) {
+ devEntry->active = newState;
+ return MV_OK;
+ } else
+ return MV_ERROR;
+}
+
+/*******************************************************************************
* mvBoardTwsiAddrTypeGet -
*
* DESCRIPTION:
@@ -2486,6 +2596,34 @@
return MV_NFC_ECC_DISABLE;
#endif
}
+/*******************************************************************************
+* mvBoardCompatibleNameGet
+*
+* DESCRIPTION: return string containing 'compatible' property value
+* needed for Device Tree auto-update parsing sequence
+*
+* INPUT: None
+* OUTPUT: None.
+*
+* RETURN: length of returned string (including special delimiters)
+*
+*******************************************************************************/
+MV_U8 mvBoardCompatibleNameGet(char *pNameBuff)
+{
+ MV_U8 len = 0;
+ /* i.e: compatible = "marvell,msys", "marvell,msys-bc2", "marvell,msys-bc2-db", "marvell,armada-370-xp"; */
+ len = sprintf(pNameBuff, "marvell,msys") + 1;
+ /*
+ * append next strings after the NULL character that the previous
+ * sprintf wrote. This is how a device tree stores multiple
+ * strings in a property.
+ */
+ len += sprintf(pNameBuff + len, "marvell,msys-bc2") + 1;
+ len += sprintf(pNameBuff + len, "marvell,msys-bc2-db") + 1;
+ len += sprintf(pNameBuff + len, "marvell,armada-370-xp") + 1;
+
+ return len;
+}
MV_NAND_IF_MODE mvBoardNandIfGet()
{
diff --git a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.h b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.h
index 33a5996..75ba82c 100755
--- a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.h
+++ b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.h
@@ -84,6 +84,13 @@
#define MV_BOARD_MAX_MPP 9 /* number of MPP conf registers */
#define MV_BOARD_NAME_LEN 0x20
+enum {
+ MV_PORT_TYPE_SGMII,
+ MV_PORT_TYPE_QSGMII,
+ MV_PORT_TYPE_RGMII,
+ MV_PORT_TYPE_UNKNOWN = -1,
+};
+
typedef enum _devBoardMppTypeClass {
MV_BOARD_AUTO = 0,
MV_BOARD_MII_GMII,
@@ -153,6 +160,8 @@
MV_U32 devClass; /* MV_BOARD_DEV_CLASS */
MV_U8 devWidth;
MV_U8 busWidth;
+ MV_U8 busNum;
+ MV_BOOL active;
} MV_DEV_CS_INFO;
typedef struct _boardSwitchInfo {
@@ -266,6 +275,7 @@
MV_BOOL mvBoardIsEthActive(MV_U32 ethNum);
MV_BOOL mvBoardIsPortInSgmii(MV_U32 ethPortNum);
MV_BOOL mvBoardIsPortInGmii(MV_U32 ethPortNum);
+MV_U32 mvBoardPortTypeGet(MV_U32 ethPortNum);
MV_BOOL mvBoardIsPortInMii(MV_U32 ethPortNum);
MV_BOOL mvBoardIsPortInRgmii(MV_U32 ethPortNum);
MV_32 mvBoardPhyAddrGet(MV_U32 ethPortNum);
@@ -289,6 +299,9 @@
MV_32 mvBoardGetDeviceWidth(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
MV_32 mvBoardGetDeviceWinSize(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
MV_U32 mvBoardGetDevCSNum(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+MV_U32 mvBoardGetDevBusNum(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+MV_BOOL mvBoardGetDevState(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+MV_STATUS mvBoardSetDevState(MV_32 devNum, MV_BOARD_DEV_CLASS devClass, MV_BOOL newState);
MV_U8 mvBoardTwsiAddrTypeGet(MV_BOARD_TWSI_CLASS twsiClass, MV_U32 index);
MV_U8 mvBoardTwsiAddrGet(MV_BOARD_TWSI_CLASS twsiClass, MV_U32 index);
MV_32 mvBoardNandWidthGet(void);
@@ -362,6 +375,7 @@
MV_VOID mvBoardDebugLed(MV_U32 hexNum);
MV_NFC_ECC_MODE mvBoardNandECCModeGet(void);
MV_U32 mvBoardCpssBoardIdSet(MV_U8);
+MV_U8 mvBoardCompatibleNameGet(char *pNameBuff);
MV_NAND_IF_MODE mvBoardNandIfGet(void);
MV_STATUS mvBoardOobPortCfgSet(MV_VOID);
MV_BOOL mvBoardIsUsbPortConnected(MV_UNIT_ID usbTypeID, MV_U8 usbPortNumber);
diff --git a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c
index fc1e7a3..7a206f0 100644
--- a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c
+++ b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c
@@ -109,12 +109,12 @@
};
MV_DEV_CS_INFO bobcat2_customer_board_0_InfoBoardDeCsInfo[] = {
- /*{deviceCS, params, devType, devWidth, busWidth }*/
+ /*{deviceCS, params, devType, devWidth, busWidth, busNum, active }*/
#if defined(MV_INCLUDE_SPI)
- {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8}, /* SPI DEV */
+ {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_TRUE}, /* SPI DEV */
#endif
#if defined(MV_INCLUDE_NOR)
- {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16} /* NOR DEV */
+ {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16, 0, MV_TRUE} /* NOR DEV */
#endif
};
@@ -218,12 +218,12 @@
};
MV_DEV_CS_INFO alleycat3_customer_board_0_InfoBoardDeCsInfo[] = {
- /*{deviceCS, params, devType, devWidth, busWidth }*/
+ /*{deviceCS, params, devType, devWidth, busWidth, busNum, active }*/
#if defined(MV_INCLUDE_SPI)
- {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8}, /* SPI DEV */
+ {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_TRUE}, /* SPI DEV */
#endif
#if defined(MV_INCLUDE_NOR)
- {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16} /* NOR DEV */
+ {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16, 0, MV_TRUE} /* NOR DEV */
#endif
};
@@ -327,12 +327,12 @@
};
MV_DEV_CS_INFO db_dx_bc2InfoBoardDeCsInfo[] = {
- /*{deviceCS, params, devType, devWidth, busWidth }*/
+ /*{deviceCS, params, devType, devWidth, busWidth, busNum, active }*/
#if defined(MV_INCLUDE_SPI)
- {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8}, /* SPI DEV */
+ {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_TRUE}, /* SPI DEV */
#endif
#if defined(MV_INCLUDE_NOR)
- {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 8, 8} /* NOR DEV */
+ {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 8, 8, 0, MV_TRUE} /* NOR DEV */
#endif
};
@@ -418,9 +418,9 @@
};
MV_DEV_CS_INFO rd_dx_bc2InfoBoardDeCsInfo[] = {
- /*{deviceCS, params, devType, devWidth}*/
+ /*{deviceCS, params, devType, devWidth, busNum, active}*/
#if defined(MV_INCLUDE_SPI)
- {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8} /* SPI DEV */
+ {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 0, MV_TRUE} /* SPI DEV */
#endif
};
@@ -503,9 +503,9 @@
};
MV_DEV_CS_INFO bc2_rd_mtlInfoBoardDeCsInfo[] = {
- /*{deviceCS, params, devType, devWidth}*/
+ /*{deviceCS, params, devType, devWidth, busNum, active}*/
#if defined(MV_INCLUDE_SPI)
- {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8} /* SPI DEV */
+ {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 0, MV_TRUE} /* SPI DEV */
#endif
};
@@ -600,12 +600,12 @@
};
MV_DEV_CS_INFO db_dx_ac3InfoBoardDeCsInfo[] = {
- /*{deviceCS, params, devType, devWidth, busWidth }*/
+ /*{deviceCS, params, devType, devWidth, busWidth, busNum, active }*/
#if defined(MV_INCLUDE_SPI)
- {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8}, /* SPI DEV */
+ {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_TRUE}, /* SPI DEV */
#endif
#if defined(MV_INCLUDE_NOR)
- {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16} /* NOR DEV */
+ {DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16, 0, MV_TRUE} /* NOR DEV */
#endif
};
diff --git a/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvSpec.h b/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvSpec.h
index 028268a..9087e58 100755
--- a/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvSpec.h
+++ b/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvSpec.h
@@ -114,6 +114,7 @@
(pexIf < 8 ? (0x40000 + ((pexIf) / 4) * 0x40000 + ((pexIf) % 4) * 0x4000)\
: (0X42000 + ((pexIf) % 8) * 0x40000))
#define MV_USB_REGS_OFFSET(dev) (0x50000 + (dev * 0x1000))
+#define MV_USB2_USB3_REGS_OFFSET(unitType, dev) (MV_USB_REGS_OFFSET(dev))
#define MV_XOR_REGS_OFFSET(unit) (0xF0800)
#if defined(MV_INCLUDE_IDMA)
#define MV_IDMA_REGS_OFFSET (0x60800)
@@ -185,6 +186,12 @@
/* This define describes the maximum number of supported PCI Interfaces */
#define MV_DEVICE_MAX_CS 4
+#ifdef CONFIG_ALLEYCAT3
+#define MV_USB_MAX_PORTS 1
+#else /* BC2 no USB ports */
+#define MV_USB_MAX_PORTS 0
+#endif
+#define MV_USB3_MAX_HOST_PORTS 0
/* This define describes the maximum number of supported Ethernet ports */
/* TODO - verify all these numbers */
diff --git a/board/mv_ebu/msys/msys_family/ctrlEnv/sys/mvCpuIf.c b/board/mv_ebu/msys/msys_family/ctrlEnv/sys/mvCpuIf.c
index 58db349..6149eb9 100755
--- a/board/mv_ebu/msys/msys_family/ctrlEnv/sys/mvCpuIf.c
+++ b/board/mv_ebu/msys/msys_family/ctrlEnv/sys/mvCpuIf.c
@@ -940,3 +940,32 @@
return MV_OK;
}
+
+/*******************************************************************************
+* mvCpuIfMbusWindowSet
+*
+* DESCRIPTION:
+* Set Mbus Bridge Window register
+*
+* INPUT:
+* Windows Base Address
+*
+* OUTPUT:
+* None.
+*
+* RETURN:
+* None.
+*
+*******************************************************************************/
+MV_VOID mvCpuIfMbusWindowSet(MV_U32 base, MV_U32 size)
+{
+ MV_U32 reg;
+
+ MV_REG_WRITE(MBUS_BRIDGE_WIN_BASE_REG, base);
+ /* Align window size to 64KB */
+ size = ((size / _64K) - 1) << BRIDGWCR_SIZE_OFFS;
+ reg = MV_REG_READ(MBUS_BRIDGE_WIN_CTRL_REG);
+ reg &= ~BRIDGWCR_SIZE_MASK;
+ reg |= (size & BRIDGWCR_SIZE_MASK);
+ MV_REG_WRITE(MBUS_BRIDGE_WIN_CTRL_REG, reg);
+}
diff --git a/include/configs/armada_38x.h b/include/configs/armada_38x.h
index 1a07b42..8adb219 100644
--- a/include/configs/armada_38x.h
+++ b/include/configs/armada_38x.h
@@ -82,6 +82,7 @@
#define MV_FS
#define CONFIG_CMD_DATE
#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_PIC_GPIO /* support GPIO signals for PIC (programmable interface circuit) */
#define MV_DDR_TRAINING_CMD_NEW_TIP
@@ -499,6 +500,7 @@
#define CONFIG_USB_XHCI
#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 1
#define MV_INCLUDE_USB
+ #define MV_INCLUDE_USB_DEVICE
#define CONFIG_CMD_USB
#define CONFIG_USB_STORAGE
#define CONFIG_EHCI_IS_TDI
diff --git a/include/configs/msys.h b/include/configs/msys.h
index b374f30..8cd137f 100644
--- a/include/configs/msys.h
+++ b/include/configs/msys.h
@@ -114,6 +114,7 @@
#ifndef __ASSEMBLY__
extern unsigned int mvCpuDdrClkGet(void);
extern unsigned int mvTclkGet(void);
+ extern unsigned int mvUartPortGet(void);
#define UBOOT_CNTR 0 /* counter to use for uboot timer */
#define MV_TCLK_CNTR 1 /* counter to use for uboot timer */
#define MV_REF_CLK_DEV_BIT 1000 /* Number of cycle to eanble timer */
@@ -204,6 +205,11 @@
#define CONFIG_BOOTP_PXE_CLIENTARCH 0x100
#define CONFIG_BOOTP_VCI_STRING "U-boot.armv7.armada_xp"
+/* Flattened Device Tree (FDT) support */
+#define CONFIG_OF_LIBFDT 1
+#define CONFIG_OF_BOARD_SETUP
+#undef CONFIG_OF_LIBFDT_IS_DEFAULT /* dft is the default for bootcmd */
+
/* FS supported */
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_EXT4