summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/usb.c2
-rw-r--r--common/image-fit.c48
-rw-r--r--common/splash_source.c89
-rw-r--r--common/usb_storage.c8
-rw-r--r--configs/mx6sllevk_defconfig5
-rw-r--r--configs/mx6sllevk_plugin_defconfig5
-rw-r--r--configs/xilinx_zynqmp_ep_defconfig1
-rw-r--r--configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig1
-rw-r--r--configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig1
-rw-r--r--configs/xilinx_zynqmp_zcu102_defconfig1
-rw-r--r--configs/xilinx_zynqmp_zcu102_revB_defconfig1
-rw-r--r--doc/README.splashprepare15
-rw-r--r--drivers/usb/gadget/dwc2_udc_otg.c2
-rw-r--r--drivers/usb/gadget/ether.c2
-rw-r--r--drivers/usb/host/Kconfig6
-rw-r--r--drivers/usb/host/ehci-mx6.c105
-rw-r--r--drivers/video/cfb_console.c6
-rw-r--r--include/configs/mx6sllevk.h8
-rw-r--r--include/configs/xilinx_zynqmp.h1
-rw-r--r--include/image.h4
-rw-r--r--include/splash.h5
-rw-r--r--scripts/config_whitelist.txt1
22 files changed, 287 insertions, 30 deletions
diff --git a/cmd/usb.c b/cmd/usb.c
index 455127c..4fa456e 100644
--- a/cmd/usb.c
+++ b/cmd/usb.c
@@ -571,11 +571,11 @@ static void do_usb_start(void)
return;
/* Driver model will probe the devices as they are found */
-#ifndef CONFIG_DM_USB
# ifdef CONFIG_USB_STORAGE
/* try to recognize storage devices immediately */
usb_stor_curr_dev = usb_stor_scan(1);
# endif
+#ifndef CONFIG_DM_USB
# ifdef CONFIG_USB_KEYBOARD
drv_usb_kbd_init();
# endif
diff --git a/common/image-fit.c b/common/image-fit.c
index 95d8bf4..109ecfa 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -778,6 +778,54 @@ int fit_image_get_data(const void *fit, int noffset,
}
/**
+ * Get 'data-offset' property from a given image node.
+ *
+ * @fit: pointer to the FIT image header
+ * @noffset: component image node offset
+ * @data_offset: holds the data-offset property
+ *
+ * returns:
+ * 0, on success
+ * -ENOENT if the property could not be found
+ */
+int fit_image_get_data_offset(const void *fit, int noffset, int *data_offset)
+{
+ const fdt32_t *val;
+
+ val = fdt_getprop(fit, noffset, FIT_DATA_OFFSET_PROP, NULL);
+ if (!val)
+ return -ENOENT;
+
+ *data_offset = fdt32_to_cpu(*val);
+
+ return 0;
+}
+
+/**
+ * Get 'data-size' property from a given image node.
+ *
+ * @fit: pointer to the FIT image header
+ * @noffset: component image node offset
+ * @data_size: holds the data-size property
+ *
+ * returns:
+ * 0, on success
+ * -ENOENT if the property could not be found
+ */
+int fit_image_get_data_size(const void *fit, int noffset, int *data_size)
+{
+ const fdt32_t *val;
+
+ val = fdt_getprop(fit, noffset, FIT_DATA_SIZE_PROP, NULL);
+ if (!val)
+ return -ENOENT;
+
+ *data_size = fdt32_to_cpu(*val);
+
+ return 0;
+}
+
+/**
* fit_image_hash_get_algo - get hash algorithm name
* @fit: pointer to the FIT format image header
* @noffset: hash node offset
diff --git a/common/splash_source.c b/common/splash_source.c
index 230b2db..a5eeb3f 100644
--- a/common/splash_source.c
+++ b/common/splash_source.c
@@ -7,15 +7,17 @@
*/
#include <common.h>
-#include <nand.h>
+#include <bmp_layout.h>
#include <errno.h>
-#include <splash.h>
-#include <spi_flash.h>
+#include <fs.h>
+#include <fdt_support.h>
+#include <image.h>
+#include <nand.h>
+#include <sata.h>
#include <spi.h>
+#include <spi_flash.h>
+#include <splash.h>
#include <usb.h>
-#include <sata.h>
-#include <bmp_layout.h>
-#include <fs.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -295,6 +297,72 @@ static struct splash_location *select_splash_location(
return NULL;
}
+#ifdef CONFIG_FIT
+static int splash_load_fit(struct splash_location *location, u32 bmp_load_addr)
+{
+ int res;
+ int node_offset;
+ int splash_offset;
+ int splash_size;
+ struct image_header *img_header;
+ const u32 *fit_header;
+ u32 fit_size;
+ const size_t header_size = sizeof(struct image_header);
+
+ /* Read in image header */
+ res = splash_storage_read_raw(location, bmp_load_addr, header_size);
+ if (res < 0)
+ return res;
+
+ img_header = (struct image_header *)bmp_load_addr;
+ fit_size = fdt_totalsize(img_header);
+
+ /* Read in entire FIT */
+ fit_header = (const u32 *)(bmp_load_addr + header_size);
+ res = splash_storage_read_raw(location, (u32)fit_header, fit_size);
+ if (res < 0)
+ return res;
+
+ res = fit_check_format(fit_header);
+ if (!res) {
+ debug("Could not find valid FIT image\n");
+ return -EINVAL;
+ }
+
+ node_offset = fit_image_get_node(fit_header, location->name);
+ if (node_offset < 0) {
+ debug("Could not find splash image '%s' in FIT\n",
+ location->name);
+ return -ENOENT;
+ }
+
+ res = fit_image_get_data_offset(fit_header, node_offset,
+ &splash_offset);
+ if (res < 0) {
+ printf("Failed to load splash image (err=%d)\n", res);
+ return res;
+ }
+
+ res = fit_image_get_data_size(fit_header, node_offset, &splash_size);
+ if (res < 0) {
+ printf("Failed to load splash image (err=%d)\n", res);
+ return res;
+ }
+
+ /* Align data offset to 4-byte boundrary */
+ fit_size = fdt_totalsize(fit_header);
+ fit_size = (fit_size + 3) & ~3;
+
+ /* Read in the splash data */
+ location->offset = (location->offset + fit_size + splash_offset);
+ res = splash_storage_read_raw(location, bmp_load_addr , splash_size);
+ if (res < 0)
+ return res;
+
+ return 0;
+}
+#endif /* CONFIG_FIT */
+
/**
* splash_source_load - load splash image from a supported location.
*
@@ -327,10 +395,13 @@ int splash_source_load(struct splash_location *locations, uint size)
if (!splash_location)
return -EINVAL;
- if (splash_location->flags & SPLASH_STORAGE_RAW)
+ if (splash_location->flags == SPLASH_STORAGE_RAW)
return splash_load_raw(splash_location, bmp_load_addr);
- else if (splash_location->flags & SPLASH_STORAGE_FS)
+ else if (splash_location->flags == SPLASH_STORAGE_FS)
return splash_load_fs(splash_location, bmp_load_addr);
-
+#ifdef CONFIG_FIT
+ else if (splash_location->flags == SPLASH_STORAGE_FIT)
+ return splash_load_fit(splash_location, bmp_load_addr);
+#endif
return -EINVAL;
}
diff --git a/common/usb_storage.c b/common/usb_storage.c
index 0345aa2..b524a15 100644
--- a/common/usb_storage.c
+++ b/common/usb_storage.c
@@ -303,7 +303,6 @@ void usb_stor_reset(void)
usb_max_devs = 0;
}
-#ifndef CONFIG_DM_USB
/*******************************************************************************
* scan the usb and reports device info
* to the user if mode = 1
@@ -311,11 +310,12 @@ void usb_stor_reset(void)
*/
int usb_stor_scan(int mode)
{
- unsigned char i;
-
if (mode == 1)
printf(" scanning usb for storage devices... ");
+#ifndef CONFIG_DM_USB
+ unsigned char i;
+
usb_disable_asynch(1); /* asynch transfer not allowed */
usb_stor_reset();
@@ -329,12 +329,12 @@ int usb_stor_scan(int mode)
} /* for */
usb_disable_asynch(0); /* asynch transfer allowed */
+#endif
printf("%d Storage Device(s) found\n", usb_max_devs);
if (usb_max_devs > 0)
return 0;
return -1;
}
-#endif
static int usb_stor_irq(struct usb_device *dev)
{
diff --git a/configs/mx6sllevk_defconfig b/configs/mx6sllevk_defconfig
index 8ae049e..267cdc6 100644
--- a/configs/mx6sllevk_defconfig
+++ b/configs/mx6sllevk_defconfig
@@ -10,6 +10,7 @@ CONFIG_CMD_BOOTZ=y
CONFIG_CMD_MEMTEST=y
CONFIG_CMD_MMC=y
CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
@@ -34,3 +35,7 @@ CONFIG_DM_REGULATOR=y
CONFIG_DM_REGULATOR_PFUZE100=y
CONFIG_DM_REGULATOR_FIXED=y
CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
diff --git a/configs/mx6sllevk_plugin_defconfig b/configs/mx6sllevk_plugin_defconfig
index e6be979..63d5bbc 100644
--- a/configs/mx6sllevk_plugin_defconfig
+++ b/configs/mx6sllevk_plugin_defconfig
@@ -11,6 +11,7 @@ CONFIG_CMD_BOOTZ=y
CONFIG_CMD_MEMTEST=y
CONFIG_CMD_MMC=y
CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
@@ -35,3 +36,7 @@ CONFIG_DM_REGULATOR=y
CONFIG_DM_REGULATOR_PFUZE100=y
CONFIG_DM_REGULATOR_FIXED=y
CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
diff --git a/configs/xilinx_zynqmp_ep_defconfig b/configs/xilinx_zynqmp_ep_defconfig
index ef7bf8b..5a564a6 100644
--- a/configs/xilinx_zynqmp_ep_defconfig
+++ b/configs/xilinx_zynqmp_ep_defconfig
@@ -66,6 +66,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=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_STORAGE=y
diff --git a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
index 9da0306..41fcc8d 100644
--- a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
+++ b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
@@ -58,6 +58,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=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_ULPI_VIEWPORT=y
diff --git a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
index d0b19f4..c09d4ba 100644
--- a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
+++ b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
@@ -58,6 +58,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=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_ULPI_VIEWPORT=y
diff --git a/configs/xilinx_zynqmp_zcu102_defconfig b/configs/xilinx_zynqmp_zcu102_defconfig
index 71ada10..09cf4e1 100644
--- a/configs/xilinx_zynqmp_zcu102_defconfig
+++ b/configs/xilinx_zynqmp_zcu102_defconfig
@@ -58,6 +58,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=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_ULPI_VIEWPORT=y
diff --git a/configs/xilinx_zynqmp_zcu102_revB_defconfig b/configs/xilinx_zynqmp_zcu102_revB_defconfig
index 64aa32f..98209ba 100644
--- a/configs/xilinx_zynqmp_zcu102_revB_defconfig
+++ b/configs/xilinx_zynqmp_zcu102_revB_defconfig
@@ -58,6 +58,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=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_ULPI_VIEWPORT=y
diff --git a/doc/README.splashprepare b/doc/README.splashprepare
index 56c1bef..f1418de 100644
--- a/doc/README.splashprepare
+++ b/doc/README.splashprepare
@@ -5,7 +5,7 @@ The splash_screen_prepare() function is a weak function defined in
common/splash.c. It is called as part of the splash screen display
sequence. It gives the board an opportunity to prepare the splash
image data before it is processed and sent to the frame buffer by
-U-Boot. Define your own version to use this feature.
+U-Boot. Define your own version to use this feature.
CONFIG_SPLASH_SOURCE
@@ -20,7 +20,12 @@ splashsource works as follows:
- If splashsource is undefined, use the first splash location as default.
- If splashsource is set to an unsupported value, do not load a splash screen.
-A splash source location can describe either storage with raw data, or storage
-formatted with a file system. In case of a filesystem, the splash screen data is
-loaded as a file. The name of the splash screen file can be controlled with the
-environment variable "splashfile".
+A splash source location can describe either storage with raw data, a storage
+formatted with a file system or a FIT image. In case of a filesystem, the splash
+screen data is loaded as a file. The name of the splash screen file can be
+controlled with the environment variable "splashfile".
+
+To enable loading the splash image from a FIT image, CONFIG_FIT must be
+enabled. Struct splash_location field 'name' should match the splash image
+name within the FIT and the FIT should start at the 'offset' field address in
+the specified storage.
diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c
index d72bfdf..cb44374 100644
--- a/drivers/usb/gadget/dwc2_udc_otg.c
+++ b/drivers/usb/gadget/dwc2_udc_otg.c
@@ -63,13 +63,11 @@ static char *state_names[] = {
"WAIT_FOR_NULL_COMPLETE",
};
-#define DRIVER_DESC "DWC2 HS USB OTG Device Driver, (c) Samsung Electronics"
#define DRIVER_VERSION "15 March 2009"
struct dwc2_udc *the_controller;
static const char driver_name[] = "dwc2-udc";
-static const char driver_desc[] = DRIVER_DESC;
static const char ep0name[] = "ep0-control";
/* Max packet size*/
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index f1b0709..4137d76 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -507,6 +507,7 @@ static const struct usb_cdc_mdlm_desc mdlm_desc = {
* can't really use its struct. All we do here is say that we're using
* the submode of "SAFE" which directly matches the CDC Subset.
*/
+#ifdef CONFIG_USB_ETH_SUBSET
static const u8 mdlm_detail_desc[] = {
6,
USB_DT_CS_INTERFACE,
@@ -516,6 +517,7 @@ static const u8 mdlm_detail_desc[] = {
0, /* network control capabilities (none) */
0, /* network data capabilities ("raw" encapsulation) */
};
+#endif
#endif
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index b9c5fbe..5129a57 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -37,6 +37,12 @@ config USB_XHCI_ROCKCHIP
help
Enables support for the on-chip xHCI controller on Rockchip SoCs.
+config USB_XHCI_ZYNQMP
+ bool "Support for Xilinx ZynqMP on-chip xHCI USB controller"
+ depends on ARCH_ZYNQMP
+ help
+ Enables support for the on-chip xHCI controller on Xilinx ZynqMP SoCs.
+
endif # USB_XHCI_HCD
config USB_EHCI_HCD
diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
index 48889c1..7b309b7 100644
--- a/drivers/usb/host/ehci-mx6.c
+++ b/drivers/usb/host/ehci-mx6.c
@@ -15,10 +15,14 @@
#include <asm/arch/imx-regs.h>
#include <asm/arch/clock.h>
#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/sys_proto.h>
#include <dm.h>
+#include <power/regulator.h>
#include "ehci.h"
+DECLARE_GLOBAL_DATA_PTR;
+
#define USB_OTGREGS_OFFSET 0x000
#define USB_H1REGS_OFFSET 0x200
#define USB_H2REGS_OFFSET 0x400
@@ -48,6 +52,7 @@
#define ANADIG_USB2_PLL_480_CTRL_EN_USB_CLKS 0x00000040
#define USBNC_OFFSET 0x200
+#define USBNC_PHY_STATUS_OFFSET 0x23C
#define USBNC_PHYSTATUS_ID_DIG (1 << 4) /* otg_id status */
#define USBNC_PHYCFG2_ACAENB (1 << 4) /* otg_id detection enable */
#define UCTRL_PWR_POL (1 << 9) /* OTG Polarity of Power Pin */
@@ -384,6 +389,7 @@ int ehci_hcd_stop(int index)
struct ehci_mx6_priv_data {
struct ehci_ctrl ctrl;
struct usb_ehci *ehci;
+ struct udevice *vbus_supply;
enum usb_init_type init_type;
int portnr;
};
@@ -399,7 +405,15 @@ static int mx6_init_after_reset(struct ehci_ctrl *dev)
if (ret)
return ret;
- board_ehci_power(priv->portnr, (type == USB_INIT_DEVICE) ? 0 : 1);
+ if (priv->vbus_supply) {
+ ret = regulator_set_enable(priv->vbus_supply,
+ (type == USB_INIT_DEVICE) ?
+ false : true);
+ if (ret) {
+ puts("Error enabling VBUS supply\n");
+ return ret;
+ }
+ }
if (type == USB_INIT_DEVICE)
return 0;
@@ -417,24 +431,108 @@ static const struct ehci_ops mx6_ehci_ops = {
.init_after_reset = mx6_init_after_reset
};
+static int ehci_usb_phy_mode(struct udevice *dev)
+{
+ struct usb_platdata *plat = dev_get_platdata(dev);
+ void *__iomem addr = (void *__iomem)dev_get_addr(dev);
+ void *__iomem phy_ctrl, *__iomem phy_status;
+ const void *blob = gd->fdt_blob;
+ int offset = dev->of_offset, phy_off;
+ u32 val;
+
+ /*
+ * About fsl,usbphy, Refer to
+ * Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt.
+ */
+ if (is_mx6()) {
+ phy_off = fdtdec_lookup_phandle(blob,
+ offset,
+ "fsl,usbphy");
+ if (phy_off < 0)
+ return -EINVAL;
+
+ addr = (void __iomem *)fdtdec_get_addr(blob, phy_off,
+ "reg");
+ if ((fdt_addr_t)addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+ phy_ctrl = (void __iomem *)(addr + USBPHY_CTRL);
+ val = readl(phy_ctrl);
+
+ if (val & USBPHY_CTRL_OTG_ID)
+ plat->init_type = USB_INIT_DEVICE;
+ else
+ plat->init_type = USB_INIT_HOST;
+ } else if (is_mx7()) {
+ phy_status = (void __iomem *)(addr +
+ USBNC_PHY_STATUS_OFFSET);
+ val = readl(phy_status);
+
+ if (val & USBNC_PHYSTATUS_ID_DIG)
+ plat->init_type = USB_INIT_DEVICE;
+ else
+ plat->init_type = USB_INIT_HOST;
+ } else {
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int ehci_usb_ofdata_to_platdata(struct udevice *dev)
+{
+ struct usb_platdata *plat = dev_get_platdata(dev);
+ const char *mode;
+
+ mode = fdt_getprop(gd->fdt_blob, dev->of_offset, "dr_mode", NULL);
+ if (mode) {
+ if (strcmp(mode, "peripheral") == 0)
+ plat->init_type = USB_INIT_DEVICE;
+ else if (strcmp(mode, "host") == 0)
+ plat->init_type = USB_INIT_HOST;
+ else if (strcmp(mode, "otg") == 0)
+ return ehci_usb_phy_mode(dev);
+ else
+ return -EINVAL;
+
+ return 0;
+ }
+
+ return ehci_usb_phy_mode(dev);
+}
+
static int ehci_usb_probe(struct udevice *dev)
{
struct usb_platdata *plat = dev_get_platdata(dev);
struct usb_ehci *ehci = (struct usb_ehci *)dev_get_addr(dev);
struct ehci_mx6_priv_data *priv = dev_get_priv(dev);
+ enum usb_init_type type = plat->init_type;
struct ehci_hccr *hccr;
struct ehci_hcor *hcor;
int ret;
priv->ehci = ehci;
priv->portnr = dev->seq;
- priv->init_type = plat->init_type;
+ priv->init_type = type;
+
+ ret = device_get_supply_regulator(dev, "vbus-supply",
+ &priv->vbus_supply);
+ if (ret)
+ debug("%s: No vbus supply\n", dev->name);
ret = ehci_mx6_common_init(ehci, priv->portnr);
if (ret)
return ret;
- board_ehci_power(priv->portnr, (priv->init_type == USB_INIT_DEVICE) ? 0 : 1);
+ if (priv->vbus_supply) {
+ ret = regulator_set_enable(priv->vbus_supply,
+ (type == USB_INIT_DEVICE) ?
+ false : true);
+ if (ret) {
+ puts("Error enabling VBUS supply\n");
+ return ret;
+ }
+ }
if (priv->init_type == USB_INIT_HOST) {
setbits_le32(&ehci->usbmode, CM_HOST);
@@ -460,6 +558,7 @@ U_BOOT_DRIVER(usb_mx6) = {
.name = "ehci_mx6",
.id = UCLASS_USB,
.of_match = mx6_usb_ids,
+ .ofdata_to_platdata = ehci_usb_ofdata_to_platdata,
.probe = ehci_usb_probe,
.remove = ehci_deregister,
.ops = &ehci_usb_ops,
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index c0b1b8d..a4cbc44 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -1861,14 +1861,16 @@ static void *video_logo(void)
__maybe_unused int y_off = 0;
__maybe_unused ulong addr;
__maybe_unused char *s;
- __maybe_unused int len, space;
+ __maybe_unused int len, ret, space;
splash_get_pos(&video_logo_xpos, &video_logo_ypos);
#ifdef CONFIG_SPLASH_SCREEN
s = getenv("splashimage");
if (s != NULL) {
- splash_screen_prepare();
+ ret = splash_screen_prepare();
+ if (ret < 0)
+ return video_fb_address;
addr = simple_strtoul(s, NULL, 16);
if (video_display_bitmap(addr,
diff --git a/include/configs/mx6sllevk.h b/include/configs/mx6sllevk.h
index b9f25cf..be4d147 100644
--- a/include/configs/mx6sllevk.h
+++ b/include/configs/mx6sllevk.h
@@ -149,4 +149,12 @@
#define CONFIG_IOMUX_LPSR
+/* USB Configs */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_ETHER_RTL8152
+#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
+#endif
+
#endif /* __CONFIG_H */
diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h
index bb749c5..9be9d47 100644
--- a/include/configs/xilinx_zynqmp.h
+++ b/include/configs/xilinx_zynqmp.h
@@ -109,7 +109,6 @@
#if defined(CONFIG_ZYNQMP_USB)
#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
-#define CONFIG_USB_XHCI_ZYNQMP
#define CONFIG_SYS_DFU_DATA_BUF_SIZE 0x1800000
#define DFU_DEFAULT_POLL_TIMEOUT 300
diff --git a/include/image.h b/include/image.h
index 6207d62..164b584 100644
--- a/include/image.h
+++ b/include/image.h
@@ -872,6 +872,8 @@ int bootz_setup(ulong image, ulong *start, ulong *end);
/* image node */
#define FIT_DATA_PROP "data"
+#define FIT_DATA_OFFSET_PROP "data-offset"
+#define FIT_DATA_SIZE_PROP "data-size"
#define FIT_TIMESTAMP_PROP "timestamp"
#define FIT_DESC_PROP "description"
#define FIT_ARCH_PROP "arch"
@@ -950,6 +952,8 @@ int fit_image_get_load(const void *fit, int noffset, ulong *load);
int fit_image_get_entry(const void *fit, int noffset, ulong *entry);
int fit_image_get_data(const void *fit, int noffset,
const void **data, size_t *size);
+int fit_image_get_data_offset(const void *fit, int noffset, int *data_offset);
+int fit_image_get_data_size(const void *fit, int noffset, int *data_size);
int fit_image_hash_get_algo(const void *fit, int noffset, char **algo);
int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value,
diff --git a/include/splash.h b/include/splash.h
index 136eac7..228aff4 100644
--- a/include/splash.h
+++ b/include/splash.h
@@ -33,8 +33,9 @@ enum splash_storage {
};
enum splash_flags {
- SPLASH_STORAGE_RAW,
- SPLASH_STORAGE_FS,
+ SPLASH_STORAGE_RAW, /* Stored in raw memory */
+ SPLASH_STORAGE_FS, /* Stored within a file system */
+ SPLASH_STORAGE_FIT, /* Stored inside a FIT image */
};
struct splash_location {
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 4935b91..12c7878 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -6819,7 +6819,6 @@ CONFIG_USB_XHCI_FSL
CONFIG_USB_XHCI_KEYSTONE
CONFIG_USB_XHCI_OMAP
CONFIG_USB_XHCI_PCI
-CONFIG_USB_XHCI_ZYNQMP
CONFIG_USER_LOWLEVEL_INIT
CONFIG_USE_FDT
CONFIG_USE_INTERRUPT