[U-Boot] [PATCH v3 1/6] drivers: usb: gadget: ether: adopt to usb driver model
Mugunthan V N
mugunthanvnm at ti.com
Mon Nov 21 06:38:39 CET 2016
Hi Simon,
On Saturday 19 November 2016 01:04 AM, Simon Glass wrote:
> Hi Mugunthan,
>
> On 17 November 2016 at 01:09, Mugunthan V N <mugunthanvnm at ti.com> wrote:
>> Convert usb ether gadget to adopt usb driver model
>>
>> Signed-off-by: Mugunthan V N <mugunthanvnm at ti.com>
>> Reviewed-by: Simon Glass <sjg at chromium.org>
>
> Sorry, but I'd like to 'un-review' this.
>
>> ---
>> drivers/usb/gadget/ether.c | 36 ++++++++++++++++++++++++++++++++++++
>> 1 file changed, 36 insertions(+)
>>
>> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
>> index 497b981129..9bc61186cf 100644
>> --- a/drivers/usb/gadget/ether.c
>> +++ b/drivers/usb/gadget/ether.c
>> @@ -24,6 +24,10 @@
>> #include "gadget_chips.h"
>> #include "rndis.h"
>>
>> +#include <dm.h>
>> +#include <dm/uclass-internal.h>
>> +#include <dm/device-internal.h>
>> +
>> #define USB_NET_NAME "usb_ether"
>>
>> #define atomic_read
>> @@ -101,6 +105,9 @@ struct eth_dev {
>> struct usb_gadget *gadget;
>> struct usb_request *req; /* for control responses */
>> struct usb_request *stat_req; /* for cdc & rndis status */
>> +#ifdef CONFIG_DM_USB
>> + struct udevice *usb_udev;
>> +#endif
>>
>> u8 config;
>> struct usb_ep *in_ep, *out_ep, *status_ep;
>> @@ -2303,6 +2310,24 @@ fail:
>>
>> /*-------------------------------------------------------------------------*/
>>
>> +#ifdef CONFIG_DM_USB
>> +int dm_usb_init(struct eth_dev *e_dev)
>> +{
>> + struct udevice *dev = NULL;
>> + int ret;
>> +
>> + ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &dev);
>> + if (!dev || ret) {
>> + error("No USB device found\n");
>> + return -ENODEV;
>> + }
>> +
>> + e_dev->usb_udev = dev;
>> +
>> + return ret;
>> +}
>> +#endif
>> +
>> static int usb_eth_init(struct eth_device *netdev, bd_t *bd)
>> {
>> struct eth_dev *dev = &l_ethdev;
>> @@ -2315,7 +2340,14 @@ static int usb_eth_init(struct eth_device *netdev, bd_t *bd)
>> goto fail;
>> }
>>
>> +#ifdef CONFIG_DM_USB
>> + if (dm_usb_init(dev)) {
>> + error("USB ether not found\n");
>> + return -ENODEV;
>> + }
>> +#else
>> board_usb_init(0, USB_INIT_DEVICE);
>> +#endif
>>
>> /* Configure default mac-addresses for the USB ethernet device */
>> #ifdef CONFIG_USBNET_DEV_ADDR
>> @@ -2497,7 +2529,11 @@ void usb_eth_halt(struct eth_device *netdev)
>> }
>>
>> usb_gadget_unregister_driver(ð_driver);
>> +#ifdef CONFIG_DM_USB
>> + device_remove(dev->usb_udev);
>> +#else
>> board_usb_cleanup(0, USB_INIT_DEVICE);
>> +#endif
>
> This doesn't look right to me. If your board is to be an Ethernet
> device then it should do:
>
> uclass_first_device(UCLASS_ETH, &dev)
>
> to get the device. That could be in the device tree under the USB
> node, or perhaps you want to have a setup function which manualy binds
> the device, a bit like usb_find_and_bind_driver().
>
This patch is to get usb device for the ether gadget. It uses the same
api with UCLASS_USB_DEV_GENERIC to get usb device. The patch hadn't done
for eth driver model adoption.
Regards
Mugunthan V N
More information about the U-Boot
mailing list