diff --git a/patch/u-boot/u-boot-mvebu-next/01-a38x-xhci-support.patch b/patch/u-boot/u-boot-mvebu-next/01-a38x-xhci-support.patch new file mode 100644 index 0000000000..111168074e --- /dev/null +++ b/patch/u-boot/u-boot-mvebu-next/01-a38x-xhci-support.patch @@ -0,0 +1,79 @@ +From d3d036af8c0ee848c4113dc609bbd6ab26ebc6cb Mon Sep 17 00:00:00 2001 +From: Jon Nettleton +Date: Mon, 6 Nov 2017 10:33:19 +0200 +Subject: [PATCH] mvebu: usb: xhci: a38x support + +This makes the initial changes need to support the +a38x series of SOCs. It adds the device-tree identifier +as well as changing the board_support function to take +the IO address designated by device-tree. + +Signed-off-by: Jon Nettleton +[baruch: use fdt_addr_t; update 37xx and 8K implementations] +Signed-off-by: Baruch Siach +Signed-off-by: Stefan Roese +--- + board/Marvell/mvebu_armada-37xx/board.c | 2 +- + board/Marvell/mvebu_armada-8k/board.c | 2 +- + drivers/usb/host/xhci-mvebu.c | 5 +++-- + 3 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c +index 8dc1f46..ac3e3a3 100644 +--- a/board/Marvell/mvebu_armada-37xx/board.c ++++ b/board/Marvell/mvebu_armada-37xx/board.c +@@ -123,7 +123,7 @@ int board_ahci_enable(void) + } + + /* Board specific xHCI enable code */ +-int board_xhci_enable(void) ++int board_xhci_enable(fdt_addr_t base) + { + struct udevice *dev; + int ret; +diff --git a/board/Marvell/mvebu_armada-8k/board.c b/board/Marvell/mvebu_armada-8k/board.c +index 7d1b5d9..f4eabfb 100644 +--- a/board/Marvell/mvebu_armada-8k/board.c ++++ b/board/Marvell/mvebu_armada-8k/board.c +@@ -95,7 +95,7 @@ int board_xhci_config(void) + return 0; + } + +-int board_xhci_enable(void) ++int board_xhci_enable(fdt_addr_t base) + { + struct udevice *dev; + int ret; +diff --git a/drivers/usb/host/xhci-mvebu.c b/drivers/usb/host/xhci-mvebu.c +index b9201a5..dbdfce3 100644 +--- a/drivers/usb/host/xhci-mvebu.c ++++ b/drivers/usb/host/xhci-mvebu.c +@@ -35,7 +35,7 @@ struct mvebu_xhci { + * Dummy implementation that can be overwritten by a board + * specific function + */ +-__weak int board_xhci_enable(void) ++__weak int board_xhci_enable(fdt_addr_t base) + { + return 0; + } +@@ -62,7 +62,7 @@ static int xhci_usb_probe(struct udevice *dev) + } + + /* Enable USB xHCI (VBUS, reset etc) in board specific code */ +- board_xhci_enable(); ++ board_xhci_enable(devfdt_get_addr_index(dev, 1)); + + return xhci_register(dev, ctx->hcd, hcor); + } +@@ -85,6 +85,7 @@ static int xhci_usb_ofdata_to_platdata(struct udevice *dev) + + static const struct udevice_id xhci_usb_ids[] = { + { .compatible = "marvell,armada3700-xhci" }, ++ { .compatible = "marvell,armada-380-xhci" }, + { .compatible = "marvell,armada-8k-xhci" }, + { } + }; +-- +1.7.10.4 + diff --git a/patch/u-boot/u-boot-mvebu-next/02-mvebu-xhci-add-board-setup.patch b/patch/u-boot/u-boot-mvebu-next/02-mvebu-xhci-add-board-setup.patch new file mode 100644 index 0000000000..68957b2462 --- /dev/null +++ b/patch/u-boot/u-boot-mvebu-next/02-mvebu-xhci-add-board-setup.patch @@ -0,0 +1,70 @@ +From 78aa018f079598082087a3b7a319a82d486982fb Mon Sep 17 00:00:00 2001 +From: Jon Nettleton +Date: Mon, 6 Nov 2017 10:33:20 +0200 +Subject: [PATCH] arm: mvebu: Add board_setup for xhci hardware + +This fixes the USB 3.0 support for the a38x SOC. + +Signed-off-by: Jon Nettleton +[baruch: use fdt_addr_t] +Signed-off-by: Baruch Siach +Signed-off-by: Stefan Roese +--- + arch/arm/mach-mvebu/cpu.c | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +diff --git a/arch/arm/mach-mvebu/cpu.c b/arch/arm/mach-mvebu/cpu.c +index 74a63dd..7c64a68 100644 +--- a/arch/arm/mach-mvebu/cpu.c ++++ b/arch/arm/mach-mvebu/cpu.c +@@ -554,6 +554,47 @@ void scsi_init(void) + } + #endif + ++#ifdef CONFIG_USB_XHCI_MVEBU ++#define USB3_MAX_WINDOWS 4 ++#define USB3_WIN_CTRL(w) (0x0 + ((w) * 8)) ++#define USB3_WIN_BASE(w) (0x4 + ((w) * 8)) ++ ++static void xhci_mvebu_mbus_config(void __iomem *base, ++ const struct mbus_dram_target_info *dram) ++{ ++ int i; ++ ++ for (i = 0; i < USB3_MAX_WINDOWS; i++) { ++ writel(0, base + USB3_WIN_CTRL(i)); ++ writel(0, base + USB3_WIN_BASE(i)); ++ } ++ ++ for (i = 0; i < dram->num_cs; i++) { ++ const struct mbus_dram_window *cs = dram->cs + i; ++ ++ /* Write size, attributes and target id to control register */ ++ writel(((cs->size - 1) & 0xffff0000) | (cs->mbus_attr << 8) | ++ (dram->mbus_dram_target_id << 4) | 1, ++ base + USB3_WIN_CTRL(i)); ++ ++ /* Write base address to base register */ ++ writel((cs->base & 0xffff0000), base + USB3_WIN_BASE(i)); ++ } ++} ++ ++int board_xhci_enable(fdt_addr_t base) ++{ ++ const struct mbus_dram_target_info *dram; ++ ++ printf("MVEBU XHCI INIT controller @ 0x%lx\n", base); ++ ++ dram = mvebu_mbus_dram_info(); ++ xhci_mvebu_mbus_config((void __iomem *)base, dram); ++ ++ return 0; ++} ++#endif ++ + void enable_caches(void) + { + /* Avoid problem with e.g. neta ethernet driver */ +-- +1.7.10.4 + diff --git a/patch/u-boot/u-boot-mvebu-next/03-clearfog-enable-xhci.patch b/patch/u-boot/u-boot-mvebu-next/03-clearfog-enable-xhci.patch new file mode 100644 index 0000000000..06cdf3358c --- /dev/null +++ b/patch/u-boot/u-boot-mvebu-next/03-clearfog-enable-xhci.patch @@ -0,0 +1,31 @@ +From b4b06ac6f767b833acf7cf6e7533ead2f4425378 Mon Sep 17 00:00:00 2001 +From: Jon Nettleton +Date: Mon, 6 Nov 2017 10:33:21 +0200 +Subject: [PATCH] arm: mvebu: clearfog: enable XHCI USB + +Enable the driver by default for the clearfog boards since the external +port is configured for XHCI. + +Signed-off-by: Jon Nettleton +[baruch: split from the SoC setup patch] +Signed-off-by: Baruch Siach +Signed-off-by: Stefan Roese +--- + configs/clearfog_defconfig | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig +index fa9f04a..3de2043 100644 +--- a/configs/clearfog_defconfig ++++ b/configs/clearfog_defconfig +@@ -43,5 +43,6 @@ CONFIG_DEBUG_UART_SHIFT=2 + CONFIG_SYS_NS16550=y + CONFIG_USB=y + CONFIG_DM_USB=y +-CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_MVEBU=y + CONFIG_USB_STORAGE=y +-- +1.7.10.4 + diff --git a/patch/u-boot/u-boot-mvebu-next/04-clearfog-fix-spi-flash-access.patch b/patch/u-boot/u-boot-mvebu-next/04-clearfog-fix-spi-flash-access.patch new file mode 100644 index 0000000000..acfd79b1b4 --- /dev/null +++ b/patch/u-boot/u-boot-mvebu-next/04-clearfog-fix-spi-flash-access.patch @@ -0,0 +1,53 @@ +From 962b8fef91fbfa58c1045bee4d9a73c72b46c829 Mon Sep 17 00:00:00 2001 +From: Jon Nettleton +Date: Mon, 13 Nov 2017 07:04:30 +0200 +Subject: [PATCH] arm: mvebu: clearfog: Fix SPI-NOR flash access + +The production variant of the SPI flash used by the clearfog +devices are based on winbond chips. Additionally enable +SPI_FLASH_BAR since some variants will have 16MB of flash +that requires this to be enabled. + +Remove the default speed and mode; these values are taken from the +device tree when CONFIG_DM_SPI_FLASH is enabled. + +Add default bus, so that 'sf' detects the SPI flash by default. + +Signed-off-by: Jon Nettleton +[baruch: remove speed/mode; add bus; move winbond to defconfig] +Signed-off-by: Baruch Siach +Signed-off-by: Stefan Roese +--- + configs/clearfog_defconfig | 3 +++ + include/configs/clearfog.h | 4 +--- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig +index 3de2043..5fa645a 100644 +--- a/configs/clearfog_defconfig ++++ b/configs/clearfog_defconfig +@@ -46,3 +46,6 @@ CONFIG_DM_USB=y + CONFIG_USB_XHCI_HCD=y + CONFIG_USB_XHCI_MVEBU=y + CONFIG_USB_STORAGE=y ++CONFIG_SPI_FLASH_BAR=y ++CONFIG_SPI_FLASH_WINBOND=y ++CONFIG_SPI_FLASH_MTD=y +diff --git a/include/configs/clearfog.h b/include/configs/clearfog.h +index 5061f6c..bf87bac 100644 +--- a/include/configs/clearfog.h ++++ b/include/configs/clearfog.h +@@ -33,9 +33,7 @@ + #define CONFIG_SYS_I2C_SPEED 100000 + + /* SPI NOR flash default params, used by sf commands */ +-#define CONFIG_SF_DEFAULT_SPEED 1000000 +-#define CONFIG_SF_DEFAULT_MODE SPI_MODE_3 +-#define CONFIG_SPI_FLASH_STMICRO ++#define CONFIG_SF_DEFAULT_BUS 1 + + /* + * SDIO/MMC Card Configuration +-- +1.7.10.4 + diff --git a/patch/u-boot/u-boot-mvebu-next/05-clearfog-add-spi-flash-DT.patch b/patch/u-boot/u-boot-mvebu-next/05-clearfog-add-spi-flash-DT.patch new file mode 100644 index 0000000000..e393e18564 --- /dev/null +++ b/patch/u-boot/u-boot-mvebu-next/05-clearfog-add-spi-flash-DT.patch @@ -0,0 +1,62 @@ +From 8c1ce928f498774a3e2c3aa03534b6e6ca6d4759 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Mon, 13 Nov 2017 07:04:31 +0200 +Subject: [PATCH] arm: mvebu: clearfog: update SPI flash DT description + +All current ClearFog SOMs have the SPI flash populated. Enable SPI flash in +the device tree. + +Add an alias to the SPI bus so that the 'sf' command can probe the flash on +bus 1. + +Add the "spi-flash" compatible string to make the standard SPI flash driver +probe the device. + +Reviewed-by: Jagan Teki +Signed-off-by: Baruch Siach +Signed-off-by: Stefan Roese +--- + arch/arm/dts/armada-388-clearfog.dts | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/arch/arm/dts/armada-388-clearfog.dts b/arch/arm/dts/armada-388-clearfog.dts +index b2dfd56..bc52bc0 100644 +--- a/arch/arm/dts/armada-388-clearfog.dts ++++ b/arch/arm/dts/armada-388-clearfog.dts +@@ -61,6 +61,7 @@ + ethernet1 = ð0; + ethernet2 = ð1; + ethernet3 = ð2; ++ spi1 = &spi1; + }; + + chosen { +@@ -330,11 +331,9 @@ + status = "okay"; + }; + +- spi@10680 { ++ spi1: spi@10680 { + /* +- * We don't seem to have the W25Q32 on the +- * A1 Rev 2.0 boards, so disable SPI. +- * CS0: W25Q32 (doesn't appear to be present) ++ * CS0: W25Q32 + * CS1: + * CS2: mikrobus + */ +@@ -345,10 +344,9 @@ + spi-flash@0 { + #address-cells = <1>; + #size-cells = <0>; +- compatible = "w25q32", "jedec,spi-nor"; ++ compatible = "w25q32", "jedec,spi-nor", "spi-flash"; + reg = <0>; /* Chip select 0 */ + spi-max-frequency = <3000000>; +- status = "disabled"; + }; + }; + +-- +1.7.10.4 +