diff mbox series

[U-Boot] board: stm32mp1: fixup the usb product id for USB download gadget

Message ID 20190913132417.19206-1-patrick.delaunay@st.com
State Accepted
Delegated to: Patrick Delaunay
Headers show
Series [U-Boot] board: stm32mp1: fixup the usb product id for USB download gadget | expand

Commit Message

Patrick DELAUNAY Sept. 13, 2019, 1:24 p.m. UTC
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>
---

 board/st/stm32mp1/stm32mp1.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Patrice CHOTARD Oct. 11, 2019, 3:27 p.m. UTC | #1
Hi Patrick

On 9/13/19 3:24 PM, Patrick Delaunay wrote:
> 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>
> ---
>
>  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

Acked-by: Patrice Chotard <patrice.chotard@st.com>

Thanks
Patrick DELAUNAY Oct. 23, 2019, 9:57 a.m. UTC | #2
> 
> 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>
> ---

Applied to u-boot-stm32/master, thanks!
diff mbox series

Patch

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