
Hi Simon
On Thursday 24 November 2016 07:51 AM, Simon Glass wrote:
Hi Mugunthan,
On 20 November 2016 at 22:38, Mugunthan V N mugunthanvnm@ti.com wrote:
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.
So can you do that one first, or is it coming soon?
Its already implemented above in the function dm_usb_init()
Regards Mugunthan V N