
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@ti.com wrote:
Convert usb ether gadget to adopt usb driver model
Signed-off-by: Mugunthan V N mugunthanvnm@ti.com Reviewed-by: Simon Glass sjg@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