[v3,6/7] arm: juno: enable USB

Message ID 20200427181804.15787-7-andre.przywara@arm.com
State Superseded
Headers show
Series
  • Arm Juno board OF_CONTROL upgrade
Related show

Commit Message

Andre Przywara April 27, 2020, 6:18 p.m.
The Juno board features a standard compliant EHCI/OHCI USB host
controller pair, which we can just enable.
The platform data is taken from the device tree.

This allows to use USB mass storage (the only storage on a Juno r0)
for loading.

At least on my board USB seems a bit flaky, I need two "usb reset"
sequences after the "usb start" to detect an USB hard drive.

Signed-off-by: Andre Przywara <andre.przywara at arm.com>
Acked-by: Liviu Dudau <liviu.dudau at arm.com>
Reviewed-by: Linus Walleij <linus.walleij at linaro.org>
---
 arch/arm/Kconfig                       | 4 ++++
 configs/vexpress_aemv8a_juno_defconfig | 5 +++++
 include/configs/vexpress_aemv8a.h      | 5 +++++
 3 files changed, 14 insertions(+)

Comments

Simon Glass April 28, 2020, 5:57 p.m. | #1
On Mon, 27 Apr 2020 at 12:19, Andre Przywara <andre.przywara at arm.com> wrote:
>
> The Juno board features a standard compliant EHCI/OHCI USB host
> controller pair, which we can just enable.
> The platform data is taken from the device tree.
>
> This allows to use USB mass storage (the only storage on a Juno r0)
> for loading.
>
> At least on my board USB seems a bit flaky, I need two "usb reset"
> sequences after the "usb start" to detect an USB hard drive.
>
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
> Acked-by: Liviu Dudau <liviu.dudau at arm.com>
> Reviewed-by: Linus Walleij <linus.walleij at linaro.org>
> ---
>  arch/arm/Kconfig                       | 4 ++++
>  configs/vexpress_aemv8a_juno_defconfig | 5 +++++
>  include/configs/vexpress_aemv8a.h      | 5 +++++
>  3 files changed, 14 insertions(+)

Reviewed-by: Simon Glass <sjg at chromium.org>

> +#define CONFIG_USB_OHCI_NEW
> +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 1

Would be good to moveconfig these.


- Simon
Tom Rini May 7, 2020, 1:04 p.m. | #2
On Mon, Apr 27, 2020 at 07:18:03PM +0100, Andre Przywara wrote:

> The Juno board features a standard compliant EHCI/OHCI USB host
> controller pair, which we can just enable.
> The platform data is taken from the device tree.
> 
> This allows to use USB mass storage (the only storage on a Juno r0)
> for loading.
> 
> At least on my board USB seems a bit flaky, I need two "usb reset"
> sequences after the "usb start" to detect an USB hard drive.
> 
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
> Acked-by: Liviu Dudau <liviu.dudau at arm.com>
> Reviewed-by: Linus Walleij <linus.walleij at linaro.org>
> Reviewed-by: Simon Glass <sjg at chromium.org>

Applied to u-boot/master, thanks!

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 449ef06be5..d582281e40 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1140,6 +1140,10 @@  config TARGET_VEXPRESS64_JUNO
 	select DM_SERIAL
 	select ARM_PSCI_FW
 	select PSCI_RESET
+	select DM
+	select BLK
+	select USB
+	select DM_USB
 
 config TARGET_LS2080A_EMU
 	bool "Support ls2080a_emu"
diff --git a/configs/vexpress_aemv8a_juno_defconfig b/configs/vexpress_aemv8a_juno_defconfig
index 6cb21e7a1b..ca7aa5ab02 100644
--- a/configs/vexpress_aemv8a_juno_defconfig
+++ b/configs/vexpress_aemv8a_juno_defconfig
@@ -27,6 +27,7 @@  CONFIG_CMD_ARMFLASH=y
 CONFIG_CMD_CACHE=y
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_UBI=y
+CONFIG_CMD_USB=y
 # CONFIG_ISO_PARTITION is not set
 # CONFIG_EFI_PARTITION is not set
 CONFIG_ENV_IS_IN_FLASH=y
@@ -41,3 +42,7 @@  CONFIG_SYS_FLASH_CFI=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x018000000
 CONFIG_SMC911X_32_BIT=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_GENERIC=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_GENERIC=y
diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h
index 3c85c93a5c..08ad368dbb 100644
--- a/include/configs/vexpress_aemv8a.h
+++ b/include/configs/vexpress_aemv8a.h
@@ -219,6 +219,11 @@ 
 #define CONFIG_SYS_FLASH_CFI_WIDTH	FLASH_CFI_32BIT
 #define CONFIG_SYS_MAX_FLASH_BANKS	1
 
+#ifdef CONFIG_USB_EHCI_HCD
+#define CONFIG_USB_OHCI_NEW
+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 1
+#endif
+
 #define CONFIG_SYS_FLASH_EMPTY_INFO	/* flinfo indicates empty blocks */
 #define FLASH_MAX_SECTOR_SIZE		0x00040000