Fix USB port indexes for USB gadget commands
Subsystems (2)
cover Fix USB port indexes for USB gadget commands
The USB gadget commands take the USB port index as a parameter. This is not playing well with the current DM support for gadget when USB0 is dedicated to host and USB1 dedicated to gadget.
This problem has been reported by Sam Protsenko <[email protected]>
This patch fixes this by using the aliases provided by the DT to get the port index right.
Tested on:
- dra76 evm
- am572 evm
Jean-Jacques Hiblot (2):
dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports
ARM: dts: define USB aliases for all omap5 platforms
arch/arm/dts/omap5-u-boot.dtsi | 5 +++++ drivers/usb/gadget/udc/udc-uclass.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-)
Signature · 1 line
2.7.4
PATCH 1/2 dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports
dfu, fastbot and other usb gadget commands take the USB port index as a parameter. Currently this index is assigned in the order of the driver bindings.
Changing this behavior using the SEQ_ALIAS feature. This option assign to the device a SEQ number based on its alias (if it exists)
To use it we must set the DM_UC_FLAG_SEQ_ALIAS flag and follow the existing naming convention: use "usb" for the name of the gadget UCLASS_DRIVER (same as for the UCLASS_USB).
If no alias is provided, then the index falls back to the order in which the bindings took place.
---
drivers/usb/gadget/udc/udc-uclass.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/usb/gadget/udc/udc-uclass.c +3 -2
@@ -20,7 +20,7 @@ int usb_gadget_initialize(int index)return -EINVAL ;if (dev_array[index])return 0 ; - ret =uclass_get_device (UCLASS_USB_GADGET_GENERIC , index, &dev); + ret =uclass_get_device_by_seq (UCLASS_USB_GADGET_GENERIC , index, &dev);if (!dev || ret) {pr_err ("No USB device found\n" );return -ENODEV ;
@@ -54,5 +54,6 @@ int usb_gadget_handle_interrupts(int index)UCLASS_DRIVER (usb_gadget_generic) = { .id =UCLASS_USB_GADGET_GENERIC , - .name ="usb_gadget_generic" , + .name ="usb" , + .flags =DM_UC_FLAG_SEQ_ALIAS , };
Signature · 1 line
2.7.4
PATCH 1/2 dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports
Quoted 1 line · Jean-Jacques Hiblot
dfu, fastbot and other usb gadget commands take the USB port index as a
fastboot.
Looks good to me, I expect Lukasz to pick it, test it and send me a PR.
Quoted 41 lines
parameter. Currently this index is assigned in the order of the driver bindings.
Changing this behavior using theSEQ_ALIASfeature. This option assign to the device a SEQ number based on its alias (if it exists)To use it we must set the
DM_UC_FLAG_SEQ_ALIASflag and follow the existing naming convention: use "usb" for the name of the gadgetUCLASS_DRIVER(same as for theUCLASS_USB).If no alias is provided, then the index falls back to the order in which the bindings took place.
Signed-off-by Jean-Jacques Hiblot <[email protected]>Reported-by Sam Protsenko <[email protected]>---
drivers/usb/gadget/udc/udc-uclass.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)drivers/usb/gadget/udc/udc-uclass.c +3
-2@@ -20,7 +20,7 @@ int usb_gadget_initialize(int index)return -EINVAL ;if (dev_array[index])return 0 ; - ret =uclass_get_device (UCLASS_USB_GADGET_GENERIC , index, &dev); + ret =uclass_get_device_by_seq (UCLASS_USB_GADGET_GENERIC , index, &dev);if (!dev || ret) {pr_err ("No USB device found\n" );return -ENODEV ;@@ -54,5 +54,6 @@ int usb_gadget_handle_interrupts(int index)UCLASS_DRIVER (usb_gadget_generic) = { .id =UCLASS_USB_GADGET_GENERIC , - .name ="usb_gadget_generic" , + .name ="usb" , + .flags =DM_UC_FLAG_SEQ_ALIAS , };
Signature · 2 lines
Best regards, Marek Vasut
PATCH 1/2 dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports
Hi Marek, Jean-Jacques,
Quoted 17 lines · Jean-Jacques Hiblot
Quoted 2 lines
dfu, fastbot and other usb gadget commands take the USB port index as a
fastboot.
Looks good to me, I expect Lukasz to pick it, test it and send me a PR.
Quoted 8 lines
parameter. Currently this index is assigned in the order of the driver bindings.
Changing this behavior using theSEQ_ALIASfeature. This option assign to the device a SEQ number based on its alias (if it exists)To use it we must set the
DM_UC_FLAG_SEQ_ALIASflag and follow the existing naming convention: use "usb" for the name of the gadgetUCLASS_DRIVER(same as for theUCLASS_USB).
I must admit that this change fixes a long standing problem with the usb number assignment.
Great job. I will test and send it in a few days time.
Quoted 27 lines
Quoted 27 lines
If no alias is provided, then the index falls back to the order in which the bindings took place.
Signed-off-by Jean-Jacques Hiblot <[email protected]>Reported-by Sam Protsenko <[email protected]>---
drivers/usb/gadget/udc/udc-uclass.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)(quoted diff) +0
-0
b/drivers/usb/gadget/udc/udc-uclass.cindex 0620518..e9f8f5f 100644drivers/usb/gadget/udc/udc-uclass.c +1
-1@@ -20,7 +20,7 @@ int usb_gadget_initialize(int index)return -EINVAL ;if (dev_array[index])return 0 ; - ret =uclass_get_device (UCLASS_USB_GADGET_GENERIC , index, &dev); + ret =uclass_get_device_by_seq (UCLASS_USB_GADGET_GENERIC , index, &dev);if (!dev || ret) {pr_err ("No USB device found\n" );drivers/usb/gadget/udc/udc-uclass.c +0
-0return -ENODEV ;@@ -54,5 +54,6 @@ int usb_gadget_handle_interrupts(int index)
Quoted 9 lines
drivers/usb/gadget/udc/udc-uclass.c int usb_gadget_handle_interrupts(int index) · line 59
Quoted 7 lines
drivers/usb/gadget/udc/udc-uclass.c +2
-1UCLASS_DRIVER (usb_gadget_generic) = { .id =UCLASS_USB_GADGET_GENERIC , - .name ="usb_gadget_generic" , + .name ="usb" , + .flags =DM_UC_FLAG_SEQ_ALIAS , };
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-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181216/7635e6e2/attachment.sig>
PATCH 1/2 dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports
Tested on BeagleBoard X15, works fine. Thanks, Jean-Jacques!
Lukasz, is there any way this series can make it to v2019.01 release? Like to see it there, for stability/consistence reasons.
Thanks!
Quoted 75 lines · Lukasz Majewski
Hi Marek, Jean-Jacques,
Quoted 17 lines · Jean-Jacques Hiblot
Quoted 2 lines
dfu, fastbot and other usb gadget commands take the USB port index as a
fastboot.
Looks good to me, I expect Lukasz to pick it, test it and send me a PR.
Quoted 8 lines
parameter. Currently this index is assigned in the order of the driver bindings.
Changing this behavior using theSEQ_ALIASfeature. This option assign to the device a SEQ number based on its alias (if it exists)To use it we must set the
DM_UC_FLAG_SEQ_ALIASflag and follow the existing naming convention: use "usb" for the name of the gadgetUCLASS_DRIVER(same as for theUCLASS_USB).I must admit that this change fixes a long standing problem with the usb number assignment.
Great job. I will test and send it in a few days time.
Quoted 27 lines
Quoted 27 lines
If no alias is provided, then the index falls back to the order in which the bindings took place.
Signed-off-by Jean-Jacques Hiblot <[email protected]>Reported-by Sam Protsenko <[email protected]>---
drivers/usb/gadget/udc/udc-uclass.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)(quoted diff) +0
-0
b/drivers/usb/gadget/udc/udc-uclass.cindex 0620518..e9f8f5f 100644drivers/usb/gadget/udc/udc-uclass.c +1
-1@@ -20,7 +20,7 @@ int usb_gadget_initialize(int index)return -EINVAL ;if (dev_array[index])return 0 ; - ret =uclass_get_device (UCLASS_USB_GADGET_GENERIC , index, &dev); + ret =uclass_get_device_by_seq (UCLASS_USB_GADGET_GENERIC , index, &dev);if (!dev || ret) {pr_err ("No USB device found\n" );return -ENODEV;drivers/usb/gadget/udc/udc-uclass.c +0
-0@@ -54,5 +54,6 @@ int usb_gadget_handle_interrupts(int index)Quoted 9 lines
drivers/usb/gadget/udc/udc-uclass.c int usb_gadget_handle_interrupts(int index) · line 59
Quoted 7 lines
drivers/usb/gadget/udc/udc-uclass.c +2
-1UCLASS_DRIVER (usb_gadget_generic) = { .id =UCLASS_USB_GADGET_GENERIC , - .name ="usb_gadget_generic" , + .name ="usb" , + .flags =DM_UC_FLAG_SEQ_ALIAS , };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-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
PATCH 2/2 ARM: dts: define USB aliases for all omap5 platforms
In reply to Jean-Jacques HiblotThis allows us to properly map the USB controller indexes
Tested on dra76 evm, am572 evm
---
arch/arm/dts/omap5-u-boot.dtsi | 5 +++++ 1 file changed, 5 insertions(+)
arch/arm/dts/omap5-u-boot.dtsi +5 -0
@@ -12,6 +12,11 @@ tick-timer = &timer2; }; + aliases { + usb0 = &usb1; + usb1 = &usb2; + }; + ocp { u-boot,dm-spl;
Signature · 1 line
2.7.4