On Wednesday 30 November 2016 04:43 AM, Joe Hershberger wrote: > On Sun, Nov 27, 2016 at 11:02 AM, Simon Glass <s...@chromium.org> wrote: >> Hi Mugunthan, >> >> On 24 November 2016 at 01:11, Mugunthan V N <mugunthan...@ti.com> wrote: >>> 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 <mugunthan...@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 <mugunthan...@ti.com> wrote: >>>>>>> Convert usb ether gadget to adopt usb driver model >>>>>>> >>>>>>> Signed-off-by: Mugunthan V N <mugunthan...@ti.com> >>>>>>> Reviewed-by: Simon Glass <s...@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() >> >> So are you saying that the Ethernet 'USB device' driver needs to be >> converted to driver model? Otherwise what stops us from using >> UCLASS_ETH here? > > I think the confusion might be that this is a USB gadget and it > doesn't support ETH DM yet. This code needs lots of clean-up. It is > still using the old Ethernet stack. This just makes the driver able to > function if you have USB DM enabled. > > At least that how I understand this patch. >
Yes, this patch adopts the driver to use DM_USB and still use only non DM ETH. Patch 6/6 actually converts the driver to adopt DM_ETH. Regards Mugunthan V N _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot