board: stm32mp1: fixup the usb product id for USB download gadget
authorPatrick Delaunay <patrick.delaunay@st.com>
Fri, 13 Sep 2019 13:24:17 +0000 (15:24 +0200)
committerPatrick Delaunay <patrick.delaunay@st.com>
Tue, 22 Oct 2019 09:00:07 +0000 (11:00 +0200)
Select the correct USB product id used by the download gadget
for ST stm32mp1 boards.

The board stm32mp1 select the correct product id, as defined in
http://www.linux-usb.org/usb.ids for the STMicroelectronics
vendor id = 0x0483 (CONFIG_USB_GADGET_VENDOR_NUM):
- dfu = 0xdf11 : STM Device in DFU mode
  it is the value used by ROM code and reused for stm32prog
  command
- fasboot = 0x0afb : Android Fastboot device
- others = 0x5720 (CONFIG_USB_GADGET_PRODUCT_NUM)
  Mass Storage Device
  it is used for UMS command / usb_dnl_ums

This patch avoid conflict when the same USB VID/PID is used for
ums, fastboot or dfu command (two different protocols associated
to the same PID).

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Acked-by: Patrice Chotard <patrice.chotard@st.com>
board/st/stm32mp1/stm32mp1.c

index 18f9b848765576fcad82661b461e938df53af35a..126af301732701803290aa539870d11c6749e896 100644 (file)
@@ -233,6 +233,23 @@ int g_dnl_board_usb_cable_connected(void)
 
        return dwc2_udc_B_session_valid(dwc2_udc_otg);
 }
+
+#define STM32MP1_G_DNL_DFU_PRODUCT_NUM 0xdf11
+#define STM32MP1_G_DNL_FASTBOOT_PRODUCT_NUM 0x0afb
+
+int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
+{
+       if (!strcmp(name, "usb_dnl_dfu"))
+               put_unaligned(STM32MP1_G_DNL_DFU_PRODUCT_NUM, &dev->idProduct);
+       else if (!strcmp(name, "usb_dnl_fastboot"))
+               put_unaligned(STM32MP1_G_DNL_FASTBOOT_PRODUCT_NUM,
+                             &dev->idProduct);
+       else
+               put_unaligned(CONFIG_USB_GADGET_PRODUCT_NUM, &dev->idProduct);
+
+       return 0;
+}
+
 #endif /* CONFIG_USB_GADGET */
 
 #ifdef CONFIG_LED