[U-Boot] [PATCH] dm: Add a No-op uclass

Jean-Jacques Hiblot jjhiblot at ti.com
Mon Mar 25 11:24:45 UTC 2019


Hi Sergey,

On 22/03/2019 18:39, Sergey Kubushyn wrote:
> On Fri, 22 Mar 2019, Jean-Jacques Hiblot wrote:
>
> It is probably the right solution, just have one suggestion -- why 
> wouldn't
> we make it UCLASS_GLUE instead? NOP is too generic, IMHO and it is 
> just NOP.
> There is definitely a place for such thing but we might want to add some
> specific functionality  for glues and NOP is not a very good place to do
> so...

GLUE is the usual term used for USB glue layers, but there are quite a 
few MISC users that are not at all related to USB that would benefit a 
UCLASS that really does nothing by itself (at91 clk system for example).

If a need for USB specific features arises then a UCLASS_GLUE will make 
sense. Until then I don't think we should add it.

>
> Just my $.25...
>
> BTW, there is yet another thing with USB gadgets bound by a glue. The
> usb_gadget_initialize() in udc-uclass.c calls uclass_get_device_by_seq()
> that requires either already probed device or an alias. If neither is 
> found
> it fails so it is not possible to get USB Glue gadget subnode to come up
> automagically.
>
> Replacing uclass_get_device_by_seq() with plain uclass_get_device() 
> solves
> this problem -- it probes the device without a need for an alias. Tested
> here on a custom imx8mq board.

I see your point and will post a fix for this. But using 
uclass_get_device_by_seq() has its benefit as it allows to set the index 
of the device using an alias in DT (usually the USB port number).

JJ

>
> Yet another $.25 :)

>> This uclass is intended for devices that do not need any features 
>> from the
>> uclass, including binding children.
>> This will typically be used by devices that are used to bind child 
>> devices
>> but do not use dm_scan_fdt_dev() to do it.
>>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
>> ---
>> drivers/core/uclass.c  | 5 +++++
>> include/dm/uclass-id.h | 1 +
>> 2 files changed, 6 insertions(+)
>>
>> diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
>> index fc3157de39..dc9eb62893 100644
>> --- a/drivers/core/uclass.c
>> +++ b/drivers/core/uclass.c
>> @@ -757,3 +757,8 @@ int uclass_pre_remove_device(struct udevice *dev)
>>     return 0;
>> }
>> #endif
>> +
>> +UCLASS_DRIVER(nop) = {
>> +    .id        = UCLASS_NOP,
>> +    .name        = "nop",
>> +};
>> diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
>> index 86e59781b0..3797cd48f6 100644
>> --- a/include/dm/uclass-id.h
>> +++ b/include/dm/uclass-id.h
>> @@ -61,6 +61,7 @@ enum uclass_id {
>>     UCLASS_MMC,        /* SD / MMC card or chip */
>>     UCLASS_MOD_EXP,        /* RSA Mod Exp device */
>>     UCLASS_MTD,        /* Memory Technology Device (MTD) device */
>> +    UCLASS_NOP,        /* No-op devices */
>>     UCLASS_NORTHBRIDGE,    /* Intel Northbridge / SDRAM controller */
>>     UCLASS_NVME,        /* NVM Express device */
>>     UCLASS_PANEL,        /* Display panel, such as an LCD */
>> -- 
>> 2.17.1
>>
>
> ---
> ******************************************************************
>KSI at home    KOI8 Net  < >  The impossible we do immediately.  *
> *  Las Vegas   NV, USA   < >  Miracles require 24-hour notice.   *
> ******************************************************************
>


More information about the U-Boot mailing list