Re: [U-Boot] [PATCH v2 1/9] dm: usb: Implement usb_detect_change() for driver model

2015-06-11 Thread Simon Glass
On 13 May 2015 at 07:02, Simon Glass s...@chromium.org wrote:
 Support this function with driver model also (CONFIG_DM_USB).

 Signed-off-by: Simon Glass s...@chromium.org
 ---

 Changes in v2:
 - Fix use of 'hub' instead of 'dev' in usb_detect_change()

  drivers/usb/host/usb-uclass.c | 43 
 +++
  1 file changed, 43 insertions(+)

Applied to u-boot-dm.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 1/9] dm: usb: Implement usb_detect_change() for driver model

2015-05-13 Thread Simon Glass
Support this function with driver model also (CONFIG_DM_USB).

Signed-off-by: Simon Glass s...@chromium.org
---

Changes in v2:
- Fix use of 'hub' instead of 'dev' in usb_detect_change()

 drivers/usb/host/usb-uclass.c | 43 +++
 1 file changed, 43 insertions(+)

diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index 963464c..6e86f4a 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -628,6 +628,49 @@ int usb_scan_device(struct udevice *parent, int port,
return 0;
 }
 
+/*
+ * Detect if a USB device has been plugged or unplugged.
+ */
+int usb_detect_change(void)
+{
+   struct udevice *hub;
+   struct uclass *uc;
+   int change = 0;
+   int ret;
+
+   ret = uclass_get(UCLASS_USB_HUB, uc);
+   if (ret)
+   return ret;
+
+   uclass_foreach_dev(hub, uc) {
+   struct usb_device *udev;
+   struct udevice *dev;
+
+   if (!device_active(hub))
+   continue;
+   for (device_find_first_child(hub, dev);
+dev;
+device_find_next_child(dev)) {
+   struct usb_port_status status;
+
+   if (!device_active(dev))
+   continue;
+
+   udev = dev_get_parentdata(dev);
+   if (usb_get_port_status(udev, udev-portnr, status)
+0)
+   /* USB request failed */
+   continue;
+
+   if (le16_to_cpu(status.wPortChange) 
+   USB_PORT_STAT_C_CONNECTION)
+   change++;
+   }
+   }
+
+   return change;
+}
+
 int usb_child_post_bind(struct udevice *dev)
 {
struct usb_dev_platdata *plat = dev_get_parent_platdata(dev);
-- 
2.2.0.rc0.207.ga3a616c

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot