From e6607cffef965011ef0ddc0fbe6f4b7c0d53aeec Mon Sep 17 00:00:00 2001 From: Stephen Warren Date: Thu, 29 May 2014 15:29:40 -0600 Subject: [PATCH] ARM: tegra: enable USB device mode and UMS on some boards For each of Jetson TK1, Venice2, and Beaver: - Enable the first USB controller in DT, and describe its configuration. - Enable USB device/gadget support. This allows the user to type e.g. "ums 0 mmc 0" at the command-line to cause U-Boot to act a USB device implementing the USB Mass Storage protocol, and expose MMC device 0 that way. This allows a host PC to mount the Tegra device's MMC, partition it, and install a filesystem on it. Signed-off-by: Stephen Warren Signed-off-by: Tom Warren --- arch/arm/dts/tegra124-jetson-tk1.dts | 9 ++++++++- arch/arm/dts/tegra124-venice2.dts | 9 ++++++++- arch/arm/dts/tegra30-beaver.dts | 9 ++++++++- include/configs/beaver.h | 2 ++ include/configs/jetson-tk1.h | 2 ++ include/configs/tegra-common-ums.h | 26 ++++++++++++++++++++++++++ include/configs/venice2.h | 2 ++ 7 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 include/configs/tegra-common-ums.h diff --git a/arch/arm/dts/tegra124-jetson-tk1.dts b/arch/arm/dts/tegra124-jetson-tk1.dts index 52e8c0e59c..464287e03e 100644 --- a/arch/arm/dts/tegra124-jetson-tk1.dts +++ b/arch/arm/dts/tegra124-jetson-tk1.dts @@ -17,7 +17,8 @@ sdhci1 = "/sdhci@700b0400"; spi0 = "/spi@7000d400"; spi1 = "/spi@7000da00"; - usb0 = "/usb@7d008000"; + usb0 = "/usb@7d000000"; + usb1 = "/usb@7d008000"; }; memory { @@ -77,6 +78,12 @@ bus-width = <8>; }; + usb@7d000000 { + status = "okay"; + dr_mode = "otg"; + nvidia,vbus-gpio = <&gpio 108 0>; /* gpio PN4, USB_VBUS_EN0 */ + }; + usb@7d008000 { status = "okay"; nvidia,vbus-gpio = <&gpio 109 0>; /* gpio PN5, USB_VBUS_EN1 */ diff --git a/arch/arm/dts/tegra124-venice2.dts b/arch/arm/dts/tegra124-venice2.dts index 2f8d1dcc37..f003413bd7 100644 --- a/arch/arm/dts/tegra124-venice2.dts +++ b/arch/arm/dts/tegra124-venice2.dts @@ -17,7 +17,8 @@ sdhci1 = "/sdhci@700b0400"; spi0 = "/spi@7000d400"; spi1 = "/spi@7000da00"; - usb0 = "/usb@7d008000"; + usb0 = "/usb@7d000000"; + usb1 = "/usb@7d008000"; }; memory { @@ -77,6 +78,12 @@ bus-width = <8>; }; + usb@7d000000 { + status = "okay"; + dr_mode = "otg"; + nvidia,vbus-gpio = <&gpio 108 0>; /* gpio PN4, USB_VBUS_EN0 */ + }; + usb@7d008000 { status = "okay"; nvidia,vbus-gpio = <&gpio 109 0>; /* gpio PN5, USB_VBUS_EN1 */ diff --git a/arch/arm/dts/tegra30-beaver.dts b/arch/arm/dts/tegra30-beaver.dts index a7cc93e93f..85e62e9db3 100644 --- a/arch/arm/dts/tegra30-beaver.dts +++ b/arch/arm/dts/tegra30-beaver.dts @@ -14,7 +14,8 @@ i2c4 = "/i2c@7000c700"; sdhci0 = "/sdhci@78000600"; sdhci1 = "/sdhci@78000000"; - usb0 = "/usb@7d008000"; + usb0 = "/usb@7d000000"; + usb1 = "/usb@7d008000"; }; memory { @@ -70,6 +71,12 @@ bus-width = <8>; }; + usb@7d000000 { + status = "okay"; + dr_mode = "otg"; + nvidia,vbus-gpio = <&gpio 238 0>; /* gpio DD6, PEX_L1_CLKREQ */ + }; + usb@7d008000 { nvidia,vbus-gpio = <&gpio 236 0>; /* PDD4 */ status = "okay"; diff --git a/include/configs/beaver.h b/include/configs/beaver.h index 9ff089e67c..ae83112798 100644 --- a/include/configs/beaver.h +++ b/include/configs/beaver.h @@ -76,6 +76,7 @@ /* USB Host support */ #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_TEGRA +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2 #define CONFIG_USB_STORAGE #define CONFIG_CMD_USB @@ -87,6 +88,7 @@ #define CONFIG_CMD_NET #define CONFIG_CMD_DHCP +#include "tegra-common-ums.h" #include "tegra-common-post.h" #endif /* __CONFIG_H */ diff --git a/include/configs/jetson-tk1.h b/include/configs/jetson-tk1.h index 6255750c3b..0b9e5b699f 100644 --- a/include/configs/jetson-tk1.h +++ b/include/configs/jetson-tk1.h @@ -63,6 +63,7 @@ /* USB Host support */ #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_TEGRA +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2 #define CONFIG_USB_STORAGE #define CONFIG_CMD_USB @@ -74,6 +75,7 @@ #define CONFIG_CMD_NET #define CONFIG_CMD_DHCP +#include "tegra-common-ums.h" #include "tegra-common-post.h" #endif /* __CONFIG_H */ diff --git a/include/configs/tegra-common-ums.h b/include/configs/tegra-common-ums.h new file mode 100644 index 0000000000..7bd8960a32 --- /dev/null +++ b/include/configs/tegra-common-ums.h @@ -0,0 +1,26 @@ +/* + * (C) Copyright 2014 + * NVIDIA Corporation + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#ifndef _TEGRA_COMMON_UMS_H_ +#define _TEGRA_COMMON_UMS_H + +#ifndef CONFIG_SPL_BUILD +/* USB gadget, and mass storage protocol */ +#define CONFIG_USB_GADGET +#define CONFIG_USB_GADGET_VBUS_DRAW 2 +#define CONFIG_CI_UDC +#define CONFIG_CI_UDC_HAS_HOSTPC +#define CONFIG_USB_GADGET_DUALSPEED +#define CONFIG_G_DNL_VENDOR_NUM 0x0955 +#define CONFIG_G_DNL_PRODUCT_NUM 0x701A +#define CONFIG_G_DNL_MANUFACTURER "NVIDIA" +#define CONFIG_USBDOWNLOAD_GADGET +#define CONFIG_USB_GADGET_MASS_STORAGE +#define CONFIG_CMD_USB_MASS_STORAGE +#endif + +#endif /* _TEGRA_COMMON_UMS_H */ diff --git a/include/configs/venice2.h b/include/configs/venice2.h index 2d75f5013f..c4a1b94b98 100644 --- a/include/configs/venice2.h +++ b/include/configs/venice2.h @@ -63,6 +63,7 @@ /* USB Host support */ #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_TEGRA +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2 #define CONFIG_USB_STORAGE #define CONFIG_CMD_USB @@ -74,6 +75,7 @@ #define CONFIG_CMD_NET #define CONFIG_CMD_DHCP +#include "tegra-common-ums.h" #include "tegra-common-post.h" #endif /* __CONFIG_H */ -- 2.25.1