[PATCH v6] usb: dwc3: use extcon fwrk to receive connect/disconnect

2013-07-15 Thread Kishon Vijay Abraham I
Modified dwc3-omap to receive connect and disconnect notification using
extcon framework. Also did the necessary cleanups required after
adapting to extcon framework.

Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
Acked-by: Felipe Balbi ba...@ti.com
Acked-by: Chanwoo Choi cw00.c...@samsung.com
---
This patch should be applied after all of the extcon patchset will be applied
because this patch has dependency of extcon patch related to DT.
http://goo.gl/Tu3qW

Changes from v5:
* rebased to 3.11-rc1
Changes from v4:
* checked the return values of extcon_register_interest and print an error
message. Note that I dint do return since there might be cases where
one of USB (device mode) or USB-HOST (host mode) might succeed.
* Added depends on of EXTCON in usb_dwc3. Only some platforms might
be using EXTCON, but inorder to avoid compilation errors, added
depends on
Changes from v3:
* did #include of of_extcon.h after Chanwoo resent the patch separating
extcon-class.c from of_extcon.c
Changes from v2:
* updated the Documentation with dwc3 dt binding information.
* used of_extcon_get_extcon_dev to get extcon device from device tree data.
Changes from v1:
* regulator enable/disable is now done here instead of palmas-usb as some users
of palmas-usb wont need regulator.
 Documentation/devicetree/bindings/usb/omap-usb.txt |5 +
 drivers/usb/dwc3/Kconfig   |1 +
 drivers/usb/dwc3/dwc3-omap.c   |  125 +---
 3 files changed, 112 insertions(+), 19 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt 
b/Documentation/devicetree/bindings/usb/omap-usb.txt
index 57e71f6..9088ab0 100644
--- a/Documentation/devicetree/bindings/usb/omap-usb.txt
+++ b/Documentation/devicetree/bindings/usb/omap-usb.txt
@@ -53,6 +53,11 @@ OMAP DWC3 GLUE
It should be set to 1 for HW mode and 2 for SW mode.
  - ranges: the child address space are mapped 1:1 onto the parent address space
 
+Optional Properties:
+ - extcon : phandle for the extcon device omap dwc3 uses to detect
+   connect/disconnect events.
+ - vbus-supply : phandle to the regulator device tree node if needed.
+
 Sub-nodes:
 The dwc3 core should be added as subnode to omap dwc3 glue.
 - dwc3 :
diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
index 757aa18..08a9fab 100644
--- a/drivers/usb/dwc3/Kconfig
+++ b/drivers/usb/dwc3/Kconfig
@@ -1,6 +1,7 @@
 config USB_DWC3
tristate DesignWare USB3 DRD Core Support
depends on (USB || USB_GADGET)  GENERIC_HARDIRQS
+   depends on EXTCON
select USB_XHCI_PLATFORM if USB_SUPPORT  USB_XHCI_HCD
help
  Say Y or M here if your system has a Dual Role SuperSpeed
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
index 077f110..b26c2a4 100644
--- a/drivers/usb/dwc3/dwc3-omap.c
+++ b/drivers/usb/dwc3/dwc3-omap.c
@@ -43,13 +43,15 @@
 #include linux/spinlock.h
 #include linux/platform_device.h
 #include linux/platform_data/dwc3-omap.h
-#include linux/usb/dwc3-omap.h
 #include linux/pm_runtime.h
 #include linux/dma-mapping.h
 #include linux/ioport.h
 #include linux/io.h
 #include linux/of.h
 #include linux/of_platform.h
+#include linux/extcon.h
+#include linux/extcon/of_extcon.h
+#include linux/regulator/consumer.h
 
 #include linux/usb/otg.h
 
@@ -155,9 +157,21 @@ struct dwc3_omap {
u32 revision;
 
u32 dma_status:1;
+
+   struct extcon_specific_cable_nb extcon_vbus_dev;
+   struct extcon_specific_cable_nb extcon_id_dev;
+   struct notifier_block   vbus_nb;
+   struct notifier_block   id_nb;
+
+   struct regulator*vbus_reg;
 };
 
-static struct dwc3_omap*_omap;
+enum omap_dwc3_vbus_id_status {
+   OMAP_DWC3_ID_FLOAT,
+   OMAP_DWC3_ID_GROUND,
+   OMAP_DWC3_VBUS_OFF,
+   OMAP_DWC3_VBUS_VALID,
+};
 
 static inline u32 dwc3_omap_readl(void __iomem *base, u32 offset)
 {
@@ -221,18 +235,24 @@ static void dwc3_omap_write_irq0_set(struct dwc3_omap 
*omap, u32 value)
omap-irq0_offset, value);
 }
 
-int dwc3_omap_mailbox(enum omap_dwc3_vbus_id_status status)
+static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
+   enum omap_dwc3_vbus_id_status status)
 {
-   u32 val;
-   struct dwc3_omap*omap = _omap;
-
-   if (!omap)
-   return -EPROBE_DEFER;
+   int ret;
+   u32 val;
 
switch (status) {
case OMAP_DWC3_ID_GROUND:
dev_dbg(omap-dev, ID GND\n);
 
+   if (omap-vbus_reg) {
+   ret = regulator_enable(omap-vbus_reg);
+   if (ret) {
+   dev_dbg(omap-dev, regulator enable failed\n);
+   return;
+   }
+   }
+
val = dwc3_omap_read_utmi_status(omap);
val = 

Re: [PATCH v6] usb: dwc3: use extcon fwrk to receive connect/disconnect

2013-07-15 Thread Felipe Balbi
On Mon, Jul 15, 2013 at 09:09:02PM +0530, Kishon Vijay Abraham I wrote:
 Modified dwc3-omap to receive connect and disconnect notification using
 extcon framework. Also did the necessary cleanups required after
 adapting to extcon framework.
 
 Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
 Acked-by: Felipe Balbi ba...@ti.com
 Acked-by: Chanwoo Choi cw00.c...@samsung.com
 ---
 This patch should be applied after all of the extcon patchset will be applied
 because this patch has dependency of extcon patch related to DT.
 http://goo.gl/Tu3qW
 
 Changes from v5:
 * rebased to 3.11-rc1
 Changes from v4:
 * checked the return values of extcon_register_interest and print an error
 message. Note that I dint do return since there might be cases where
 one of USB (device mode) or USB-HOST (host mode) might succeed.
 * Added depends on of EXTCON in usb_dwc3. Only some platforms might
 be using EXTCON, but inorder to avoid compilation errors, added
 depends on
 Changes from v3:
 * did #include of of_extcon.h after Chanwoo resent the patch separating
 extcon-class.c from of_extcon.c
 Changes from v2:
 * updated the Documentation with dwc3 dt binding information.
 * used of_extcon_get_extcon_dev to get extcon device from device tree data.
 Changes from v1:
 * regulator enable/disable is now done here instead of palmas-usb as some 
 users
 of palmas-usb wont need regulator.
  Documentation/devicetree/bindings/usb/omap-usb.txt |5 +
  drivers/usb/dwc3/Kconfig   |1 +
  drivers/usb/dwc3/dwc3-omap.c   |  125 
 +---
  3 files changed, 112 insertions(+), 19 deletions(-)
 
 diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt 
 b/Documentation/devicetree/bindings/usb/omap-usb.txt
 index 57e71f6..9088ab0 100644
 --- a/Documentation/devicetree/bindings/usb/omap-usb.txt
 +++ b/Documentation/devicetree/bindings/usb/omap-usb.txt
 @@ -53,6 +53,11 @@ OMAP DWC3 GLUE
 It should be set to 1 for HW mode and 2 for SW mode.
   - ranges: the child address space are mapped 1:1 onto the parent address 
 space
  
 +Optional Properties:
 + - extcon : phandle for the extcon device omap dwc3 uses to detect
 +   connect/disconnect events.
 + - vbus-supply : phandle to the regulator device tree node if needed.
 +
  Sub-nodes:
  The dwc3 core should be added as subnode to omap dwc3 glue.
  - dwc3 :
 diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
 index 757aa18..08a9fab 100644
 --- a/drivers/usb/dwc3/Kconfig
 +++ b/drivers/usb/dwc3/Kconfig
 @@ -1,6 +1,7 @@
  config USB_DWC3
   tristate DesignWare USB3 DRD Core Support
   depends on (USB || USB_GADGET)  GENERIC_HARDIRQS
 + depends on EXTCON

can you rebase this on top of 'testing' branch. I have a patch there
which give glue layers their own Kconfig symbols. If you do that, I can
queue this patch myself for v3.12, unless we have dependencies on other
patches which aren't in mainline, in which case, I'd ask to simply
remove this Kconfig change for now.

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH v6] usb: dwc3: use extcon fwrk to receive connect/disconnect

2013-07-15 Thread Chanwoo Choi
On 07/16/2013 12:51 AM, Felipe Balbi wrote:
 On Mon, Jul 15, 2013 at 09:09:02PM +0530, Kishon Vijay Abraham I wrote:
 Modified dwc3-omap to receive connect and disconnect notification using
 extcon framework. Also did the necessary cleanups required after
 adapting to extcon framework.

 Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
 Acked-by: Felipe Balbi ba...@ti.com
 Acked-by: Chanwoo Choi cw00.c...@samsung.com
 ---
 This patch should be applied after all of the extcon patchset will be applied
 because this patch has dependency of extcon patch related to DT.
 http://goo.gl/Tu3qW

 Changes from v5:
 * rebased to 3.11-rc1
 Changes from v4:
 * checked the return values of extcon_register_interest and print an error
 message. Note that I dint do return since there might be cases where
 one of USB (device mode) or USB-HOST (host mode) might succeed.
 * Added depends on of EXTCON in usb_dwc3. Only some platforms might
 be using EXTCON, but inorder to avoid compilation errors, added
 depends on
 Changes from v3:
 * did #include of of_extcon.h after Chanwoo resent the patch separating
 extcon-class.c from of_extcon.c
 Changes from v2:
 * updated the Documentation with dwc3 dt binding information.
 * used of_extcon_get_extcon_dev to get extcon device from device tree data.
 Changes from v1:
 * regulator enable/disable is now done here instead of palmas-usb as some 
 users
 of palmas-usb wont need regulator.
  Documentation/devicetree/bindings/usb/omap-usb.txt |5 +
  drivers/usb/dwc3/Kconfig   |1 +
  drivers/usb/dwc3/dwc3-omap.c   |  125 
 +---
  3 files changed, 112 insertions(+), 19 deletions(-)

 diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt 
 b/Documentation/devicetree/bindings/usb/omap-usb.txt
 index 57e71f6..9088ab0 100644
 --- a/Documentation/devicetree/bindings/usb/omap-usb.txt
 +++ b/Documentation/devicetree/bindings/usb/omap-usb.txt
 @@ -53,6 +53,11 @@ OMAP DWC3 GLUE
 It should be set to 1 for HW mode and 2 for SW mode.
   - ranges: the child address space are mapped 1:1 onto the parent address 
 space
  
 +Optional Properties:
 + - extcon : phandle for the extcon device omap dwc3 uses to detect
 +   connect/disconnect events.
 + - vbus-supply : phandle to the regulator device tree node if needed.
 +
  Sub-nodes:
  The dwc3 core should be added as subnode to omap dwc3 glue.
  - dwc3 :
 diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
 index 757aa18..08a9fab 100644
 --- a/drivers/usb/dwc3/Kconfig
 +++ b/drivers/usb/dwc3/Kconfig
 @@ -1,6 +1,7 @@
  config USB_DWC3
  tristate DesignWare USB3 DRD Core Support
  depends on (USB || USB_GADGET)  GENERIC_HARDIRQS
 +depends on EXTCON
 
 can you rebase this on top of 'testing' branch. I have a patch there
 which give glue layers their own Kconfig symbols. If you do that, I can
 queue this patch myself for v3.12, unless we have dependencies on other
 patches which aren't in mainline, in which case, I'd ask to simply
 remove this Kconfig change for now.
 

Dear Felipe and Kishon,

We have some confusion about applying this patch.

I already applied this patch on extcon-next branch for v3.12. This patch has 
the dependency on below extcon patch.
[PATCH] usb: dwc3: use extcon fwrk to receive connect/disconnect
- 
http://git.kernel.org/cgit/linux/kernel/git/chanwoo/extcon.git/commit/?h=extcon-nextid=68517aac722c8c3e0c153b3ede40aace25cb66fa
[PATCH] extcon: Add an API to get extcon device from dt node
- 
http://git.kernel.org/cgit/linux/kernel/git/chanwoo/extcon.git/commit/?h=extcon-nextid=cb28faede03de7abe82336c3648771a01f5fe225

If Felipe would apply this patch usb.git for v3.12, I think you should include 
extcon patch together.
[PATCH] extcon: Add an API to get extcon device from dt node
- 
http://git.kernel.org/cgit/linux/kernel/git/chanwoo/extcon.git/commit/?h=extcon-nextid=cb28faede03de7abe82336c3648771a01f5fe225

The dependency related to patch cause this confusion.
What is your opinion?

Thanks,
Chanwoo Choi

--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html