[PATCH 3/5] usb: dwc3-generic: Relax unsupported dr_mode check
Marek Vasut
marex at denx.de
Thu Jul 13 12:08:28 CEST 2023
On 7/13/23 11:56, Jonas Karlman wrote:
> Hi Marek,
>
> Sorry for late reply.
> On 2023-06-05 12:14, Marek Vasut wrote:
>> On 5/30/23 12:26, Jonas Karlman wrote:
>>> When dr_mode is peripheral or otg and U-Boot has not been built with
>>> DM_USB_GADGET support, booting such device may end up with:
>>>
>>> dwc3_glue_bind_common: subnode name: usb at fcc00000
>>> Error binding driver 'dwc3-generic-wrapper': -6
>>> Some drivers failed to bind
>>> initcall sequence 00000000effbca08 failed at call 0000000000a217c8 (err=-6)
>>> ### ERROR ### Please RESET the board ###
>>>
>>> Instead fail gracfully with ENODEV to allow board continue booting.
>>>
>>> dwc3_glue_bind_common: subnode name: usb at fcc00000
>>> dwc3_glue_bind_common: unsupported dr_mode
>>>
>>> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
>>> ---
>>> drivers/usb/dwc3/dwc3-generic.c | 4 ++--
>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
>>> index c28ad47bddd8..f7859a530280 100644
>>> --- a/drivers/usb/dwc3/dwc3-generic.c
>>> +++ b/drivers/usb/dwc3/dwc3-generic.c
>>> @@ -422,13 +422,13 @@ static int dwc3_glue_bind_common(struct udevice *parent, ofnode node)
>>> dr_mode = usb_get_dr_mode(node);
>>>
>>> switch (dr_mode) {
>>> +#if CONFIG_IS_ENABLED(DM_USB_GADGET)
>>> case USB_DR_MODE_PERIPHERAL:
>>> case USB_DR_MODE_OTG:
>>> -#if CONFIG_IS_ENABLED(DM_USB_GADGET)
>>
>> Why not just do
>>
>> #else
>> return -ENODEV
>> #endif
>>
>> here ?
>
> The code was changed to closer match how host mode is already handled,
> and the default switch case already return -ENODEV.
Let's try the above and see if that makes the code more readable.
Also, you might want to try
if (!CONFIG_IS_ENABLED(DM_USB_GADGET))
return -ENODEV;
To improve build coverage.
More information about the U-Boot
mailing list