Re: [PATCH 3/5] usb: common: introduce of_usb_get_maximum_speed()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Tue, Jul 02, 2013 at 10:06:23AM +0200, Sebastian Andrzej Siewior wrote:
> On 07/01/2013 09:18 AM, Felipe Balbi wrote:
> > diff --git a/drivers/usb/usb-common.c b/drivers/usb/usb-common.c
> > index 675384d..b87f202 100644
> > --- a/drivers/usb/usb-common.c
> > +++ b/drivers/usb/usb-common.c
> > @@ -112,6 +112,41 @@ enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
> >  	return USB_DR_MODE_UNKNOWN;
> >  }
> >  EXPORT_SYMBOL_GPL(of_usb_get_dr_mode);
> > +
> > +static const char *const usb_maximum_speed[] = {
> > +	[USB_SPEED_UNKNOWN]	= "",
> > +	[USB_SPEED_LOW]		= "lowspeed",
> > +	[USB_SPEED_FULL]	= "fullspeed",
> > +	[USB_SPEED_HIGH]	= "highspeed",
> > +	[USB_SPEED_SUPER]	= "superspeed",
> 
> I somehow would love if you could move that table + the lookup function
> into usb-common where allready have the reverse one called
> usb_speed_string(). Then we could have always "low-speed" instead
> mixing the wording.

uhm... this is usb-common.c

But I agree that we should use low-speed instead of lowspeed.

> Also it would be nice if you would Cc: the devicetree-discuss@ folks and
> document the binding in Documentation/devicetree/bindings/usb/

sure, will do.

> > +};
> > +
> > +/**
> > + * of_usb_get_maximum_speed - Get maximum requested speed for a given USB
> > + * controller.
> > + * @np: Pointer to the given device_node
> > + *
> > + * The function gets the maximum speed string from property "maximum-speed",
> > + * and returns the corresponding enum usb_device_speed.
> > + */
> > +enum usb_device_speed of_usb_get_maximum_speed(struct device_node *np)
> > +{
> > +	const char *maximum_speed;
> > +	int err;
> > +	int i;
> > +
> > +	err = of_property_read_string(np, "maximum-speed", &maximum_speed);
> > +	if (err < 0)
> > +		return USB_SPEED_UNKNOWN;
> > +
> > +	for (i = 0; i < ARRAY_SIZE(usb_maximum_speed); i++)
> > +		if (strcmp(maximum_speed, usb_maximum_speed[i]) == 0)
> > +			return i;
> > +
> > +	return USB_SPEED_UNKNOWN;
> 
> This looks tricky. If you copy that property unconditionally than you
> will end up with UNKNOWN speed if that property is missing and no
> gadget will load, right? If so, maybe a second argument would be nice

UDC should be required to treat UNKOWN as maximum-speed not being
passed and, thus, fixing it to the maximum the HW supports.

> which would be used as the default speed if none is found in DT. Unless
> you want to do that check in each and every driver.

I don't mind either way although I find it funny to pass a 'default'
argument which just gets returned back to the caller if maximum-speed
isn't available.

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux