From fb90fcf82628f0328649e55c7bf0c41f79872505 Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Fri, 13 Sep 2019 15:24:17 +0200 Subject: [PATCH] board: stm32mp1: fixup the usb product id for USB download gadget 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 Acked-by: Patrice Chotard --- board/st/stm32mp1/stm32mp1.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index 18f9b84876..126af30173 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -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 -- 2.39.5