[PATCH v14 5/5] usb: onboard-hub: Bail out if peer hub is already probed

Marek Vasut marex at denx.de
Mon Dec 2 20:19:25 CET 2024


On 12/2/24 4:16 PM, Patrice CHOTARD wrote:
> 
> 
> On 11/25/24 05:12, Venkatesh Yadav Abbarapu wrote:
>> The .bind function is implemented to bind the correct
>> "half" of the hub that the driver wants to bind,
>> and returning -ENODEV for the other "half".
>>
>> Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu at amd.com>
>> Reviewed-by: Marek Vasut <marex at denx.de>
>> ---
>>   common/usb_onboard_hub.c | 21 +++++++++++++++++++++
>>   1 file changed, 21 insertions(+)
>>
>> diff --git a/common/usb_onboard_hub.c b/common/usb_onboard_hub.c
>> index bf71266272..6f28036e09 100644
>> --- a/common/usb_onboard_hub.c
>> +++ b/common/usb_onboard_hub.c
>> @@ -176,6 +176,26 @@ err:
>>   	return ret;
>>   }
>>   
>> +static int usb_onboard_hub_bind(struct udevice *dev)
>> +{
>> +	struct ofnode_phandle_args phandle;
>> +	const void *fdt = gd->fdt_blob;
>> +	int ret, off;
>> +
>> +	ret = dev_read_phandle_with_args(dev, "peer-hub", NULL, 0, 0, &phandle);
>> +	if (ret)  {
>> +		dev_err(dev, "peer-hub not specified\n");
>> +		return ret;
>> +	}
>> +
>> +	off = ofnode_to_offset(phandle.node);
>> +	ret = fdt_node_check_compatible(fdt, off, "usb424,5744");
>> +	if (!ret)
>> +		return 0;
>> +
>> +	return -ENODEV;
>> +}
>> +
>>   static int usb_onboard_hub_remove(struct udevice *dev)
>>   {
>>   	struct onboard_hub *hub = dev_get_priv(dev);
>> @@ -218,6 +238,7 @@ static const struct udevice_id usb_onboard_hub_ids[] = {
>>   U_BOOT_DRIVER(usb_onboard_hub) = {
>>   	.name	= "usb_onboard_hub",
>>   	.id	= UCLASS_USB_HUB,
>> +	.bind   = usb_onboard_hub_bind,
>>   	.probe = usb_onboard_hub_probe,
>>   	.remove = usb_onboard_hub_remove,
>>   	.of_match = usb_onboard_hub_ids,
> 
> Hi All
> 
> This patch has been merged in v2025.01-rc3 (sha1 57e30b09fcfc88da72c310f979b35ed99a9b277c)
> and it avoids the STM32MP157c-DK2 board to boot:
> 
> U-Boot 2025.01-rc3 (Dec 02 2024 - 16:10:28 +0100)
> 
> CPU: STM32MP157CAC Rev.B
> Model: STMicroelectronics STM32MP157C-DK2 Discovery Board
> Board: stm32mp1 in trusted mode (st,stm32mp157c-dk2)
> Board: MB1272 Var2.0 Rev.C-01
> DRAM:  512 MiB
> usb_onboard_hub hub at 1: peer-hub not specified
> initcall failed at call c0123da5 (err=-2: No such file or directory)
> ### ERROR ### Please RESET the board ###
> 
> This boards embeds a "usb424,2514" hub, regarding the Documentation/devicetree/bindings/usb/microchip,usb2514.yaml,
> this kind of hub doesn't need the "peer-hub" property.
Sigh ... thanks for testing.

Clearly this property is only needed for some devices, likely a boolean 
flag should be added to driver data to indicate a device requires this 
property ?

Please remind me if there is no fix by rc4 and I'll revert the series so 
it is not broken in 2025.01. Thank you!


More information about the U-Boot mailing list