Skip to contentSkip to conversation

ARM: imx6: Enable UMS and DFU on DHCOM i.MX6 PDK

PATCH Superseded Marek Vasut 2 participants 2 messages Oct 19, 2017 – Oct 21, 2017 Arm i.MX and Layerscape

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: imx6: Enable UMS and DFU on DHCOM i.MX6 PDK

Enable UMS and DFU, so that the eMMC can be accessed via the USB gadget port on the board.

---
 board/dhelectronics/dh_imx6/dh_imx6.c | 10 ++--------
 configs/dh_imx6_defconfig             |  8 ++++++++
 include/configs/dh_imx6.h             | 12 ++++++++++++
 3 files changed, 22 insertions(+), 8 deletions(-)
board/dhelectronics/dh_imx6/dh_imx6.c +2 -8
index e372fbad32..f730e5febd 100644
@@ -253,16 +253,10 @@ static void setup_usb(void)
 
 int board_usb_phy_mode(int port)
 {
-	return USB_INIT_HOST;
-}
-
-/* Use only Port 1 == DHCOM USB Host 1 */
-int board_ehci_hcd_init(int port)
-{
 	if (port == 1)
-		return 0;
+		return USB_INIT_HOST;
 	else
-		return -ENODEV;
+		return USB_INIT_DEVICE;
 }
 
 int board_ehci_power(int port, int on)
configs/dh_imx6_defconfig +8 -0
index 5125260ee4..ef6dc564d1 100644
@@ -20,6 +20,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_UNZIP=y
+CONFIG_CMD_DFU=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
@@ -28,6 +29,7 @@ CONFIG_CMD_PART=y
 CONFIG_CMD_SATA=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
@@ -48,4 +50,10 @@ CONFIG_NETDEVICES=y
 CONFIG_FEC_MXC=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="dh"
+CONFIG_G_DNL_VENDOR_NUM=0x0525
+CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
 CONFIG_OF_LIBFDT=y
include/configs/dh_imx6.h +12 -0
index 0595f60e32..11a01d476f 100644
@@ -115,6 +115,18 @@
 #define CONFIG_MXC_USB_PORTSC		(PORT_PTS_UTMI | PORT_PTS_PTW)
 #define CONFIG_MXC_USB_FLAGS		0
 #define CONFIG_USB_MAX_CONTROLLER_COUNT	2 /* Enabled USB controller number */
+
+/* USB Gadget (DFU, UMS) */
+#if defined(CONFIG_CMD_DFU) || defined(CONFIG_CMD_USB_MASS_STORAGE)
+#define CONFIG_USB_FUNCTION_MASS_STORAGE
+
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE	(16 * 1024 * 1024)
+#define DFU_DEFAULT_POLL_TIMEOUT	300
+
+/* USB IDs */
+#define CONFIG_G_DNL_UMS_VENDOR_NUM	0x0525
+#define CONFIG_G_DNL_UMS_PRODUCT_NUM	0xA4A5
+#endif
 #endif
 
 /* Watchdog */
Signature · 1 line
2.11.0
#1 lore raw

PATCH 1/1 ARM: imx6: Enable UMS and DFU on DHCOM i.MX6 PDK

Hi Marek,

Quoted 55 lines

Enable UMS and DFU, so that the eMMC can be accessed via the USB gadget port on the board.

---
 board/dhelectronics/dh_imx6/dh_imx6.c | 10 ++--------
 configs/dh_imx6_defconfig             |  8 ++++++++
 include/configs/dh_imx6.h             | 12 ++++++++++++
 3 files changed, 22 insertions(+), 8 deletions(-)
(quoted diff) +0 -0

b/board/dhelectronics/dh_imx6/dh_imx6.c index e372fbad32..f730e5febd 100644 --- a/board/dhelectronics/dh_imx6/dh_imx6.c
+++ b/board/dhelectronics/dh_imx6/dh_imx6.c

board/dhelectronics/dh_imx6/dh_imx6.c +2 -8
@@ -253,16 +253,10 @@ static void setup_usb(void)
 
 int board_usb_phy_mode(int port)
 {
-	return USB_INIT_HOST;
-}
-
-/* Use only Port 1 == DHCOM USB Host 1 */
-int board_ehci_hcd_init(int port)
-{
 	if (port == 1)
-		return 0;
+		return USB_INIT_HOST;
 	else
-		return -ENODEV;
+		return USB_INIT_DEVICE;
 }
 
 int board_ehci_power(int port, int on)
configs/dh_imx6_defconfig +2 -0
index 5125260ee4..ef6dc564d1 100644
@@ -20,6 +20,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_UNZIP=y
+CONFIG_CMD_DFU=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
@@ -28,6 +29,7 @@ CONFIG_CMD_PART=y
 CONFIG_CMD_SATA=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y

configs/dh_imx6_defconfig CONFIG_NETDEVICES=y · line 58

Quoted 9 lines
configs/dh_imx6_defconfig +6 -0
@@ -48,4 +50,10 @@ CONFIG_NETDEVICES=y
 CONFIG_FEC_MXC=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="dh"
+CONFIG_G_DNL_VENDOR_NUM=0x0525
+CONFIG_G_DNL_PRODUCT_NUM=0xa4a5

Newest mainline has switched from G_DNL -> USB_GADGET

Quoted 14 lines
configs/dh_imx6_defconfig +0 -0
 CONFIG_OF_LIBFDT=y
include/configs/dh_imx6.h +0 -0
index 0595f60e32..11a01d476f 100644
@@ -115,6 +115,18 @@
 #define CONFIG_MXC_USB_PORTSC		(PORT_PTS_UTMI |

PORT_PTS_PTW) #define CONFIG_MXC_USB_FLAGS 0
#define CONFIG_USB_MAX_CONTROLLER_COUNT 2 /* Enabled USB
controller number */ +

include/configs/dh_imx6.h +4 -0
+/* USB Gadget (DFU, UMS) */
+#if defined(CONFIG_CMD_DFU) || defined(CONFIG_CMD_USB_MASS_STORAGE)
+#define CONFIG_USB_FUNCTION_MASS_STORAGE
+

include/configs/dh_imx6.h line 132

Quoted 10 lines
include/configs/dh_imx6.h +7 -0
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE	(16 * 1024 * 1024)
+#define DFU_DEFAULT_POLL_TIMEOUT	300
+
+/* USB IDs */
+#define CONFIG_G_DNL_UMS_VENDOR_NUM	0x0525
+#define CONFIG_G_DNL_UMS_PRODUCT_NUM	0xA4A5
+#endif
 #endif
 
 /* Watchdog */

Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de