All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] usb: hcd: add generic PHY support
@ 2014-04-09 21:32 Sergei Shtylyov
  2014-05-23 23:32 ` Sergei Shtylyov
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2014-04-09 21:32 UTC (permalink / raw)
  To: linux-sh

Add the generic PHY support, analogous to the USB PHY support. Intended it to be
used with the PCI EHCI/OHCI drivers and the xHCI platform driver.

Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

---
This patch is against the 'usb-next' branch of Greg KH's 'usb.git' repo.

Changes in version 2:
- renamed the new 'phy' field of 'struct usb_phy' to 'gen_phy';
- resolved rejects due to removal of the first patch in the series.

 drivers/usb/core/hcd.c  |   42 ++++++++++++++++++++++++++++++++++++++++--
 include/linux/usb/hcd.h |    3 ++-
 2 files changed, 42 insertions(+), 3 deletions(-)

Index: usb/drivers/usb/core/hcd.c
=================================--- usb.orig/drivers/usb/core/hcd.c
+++ usb/drivers/usb/core/hcd.c
@@ -42,6 +42,7 @@
 #include <linux/pm_runtime.h>
 #include <linux/types.h>
 
+#include <linux/phy/phy.h>
 #include <linux/usb.h>
 #include <linux/usb/hcd.h>
 #include <linux/usb/phy.h>
@@ -2623,6 +2624,29 @@ int usb_add_hcd(struct usb_hcd *hcd,
 		}
 	}
 
+	if (IS_ENABLED(CONFIG_GENERIC_PHY)) {
+		struct phy *phy = phy_get(hcd->self.controller, "usb");
+
+		if (IS_ERR(phy)) {
+			retval = PTR_ERR(phy);
+			if (retval = -EPROBE_DEFER)
+				goto err_phy;
+		} else {
+			retval = phy_init(phy);
+			if (retval) {
+				phy_put(phy);
+				goto err_phy;
+			}
+			retval = phy_power_on(phy);
+			if (retval) {
+				phy_exit(phy);
+				phy_put(phy);
+				goto err_phy;
+			}
+			hcd->gen_phy = phy;
+		}
+	}
+
 	dev_info(hcd->self.controller, "%s\n", hcd->product_desc);
 
 	/* Keep old behaviour if authorized_default is not in [0, 1]. */
@@ -2638,7 +2662,7 @@ int usb_add_hcd(struct usb_hcd *hcd,
 	 */
 	if ((retval = hcd_buffer_create(hcd)) != 0) {
 		dev_dbg(hcd->self.controller, "pool alloc failed\n");
-		goto err_remove_phy;
+		goto err_create_buf;
 	}
 
 	if ((retval = usb_register_bus(&hcd->self)) < 0)
@@ -2763,7 +2787,14 @@ err_allocate_root_hub:
 	usb_deregister_bus(&hcd->self);
 err_register_bus:
 	hcd_buffer_destroy(hcd);
-err_remove_phy:
+err_create_buf:
+	if (IS_ENABLED(CONFIG_GENERIC_PHY) && hcd->gen_phy) {
+		phy_power_off(hcd->gen_phy);
+		phy_exit(hcd->gen_phy);
+		phy_put(hcd->gen_phy);
+		hcd->gen_phy = NULL;
+	}
+err_phy:
 	if (hcd->remove_phy && hcd->phy) {
 		usb_phy_shutdown(hcd->phy);
 		usb_put_phy(hcd->phy);
@@ -2841,6 +2872,13 @@ void usb_remove_hcd(struct usb_hcd *hcd)
 	usb_put_dev(hcd->self.root_hub);
 	usb_deregister_bus(&hcd->self);
 	hcd_buffer_destroy(hcd);
+
+	if (IS_ENABLED(CONFIG_GENERIC_PHY) && hcd->gen_phy) {
+		phy_power_off(hcd->gen_phy);
+		phy_exit(hcd->gen_phy);
+		phy_put(hcd->gen_phy);
+		hcd->gen_phy = NULL;
+	}
 	if (hcd->remove_phy && hcd->phy) {
 		usb_phy_shutdown(hcd->phy);
 		usb_put_phy(hcd->phy);
Index: usb/include/linux/usb/hcd.h
=================================--- usb.orig/include/linux/usb/hcd.h
+++ usb/include/linux/usb/hcd.h
@@ -106,7 +106,8 @@ struct usb_hcd {
 	 * OTG and some Host controllers need software interaction with phys;
 	 * other external phys should be software-transparent
 	 */
-	struct usb_phy	*phy;
+	struct usb_phy		*phy;
+	struct phy		*gen_phy;
 
 	/* Flags that need to be manipulated atomically because they can
 	 * change while the host controller is running.  Always use

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] usb: hcd: add generic PHY support
  2014-04-09 21:32 [PATCH v2] usb: hcd: add generic PHY support Sergei Shtylyov
@ 2014-05-23 23:32 ` Sergei Shtylyov
  2014-05-27 21:13 ` Greg KH
  2014-05-27 21:53 ` Sergei Shtylyov
  2 siblings, 0 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2014-05-23 23:32 UTC (permalink / raw)
  To: linux-sh

Hello.

On 04/10/2014 01:32 AM, Sergei Shtylyov wrote:

> Add the generic PHY support, analogous to the USB PHY support. Intended it to be
> used with the PCI EHCI/OHCI drivers and the xHCI platform driver.

> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

> ---
> This patch is against the 'usb-next' branch of Greg KH's 'usb.git' repo.

> Changes in version 2:
> - renamed the new 'phy' field of 'struct usb_phy' to 'gen_phy';
> - resolved rejects due to removal of the first patch in the series.

    Is anyone going to apply this for 3.16? Time's running out...

WBR, Sergei


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] usb: hcd: add generic PHY support
  2014-04-09 21:32 [PATCH v2] usb: hcd: add generic PHY support Sergei Shtylyov
  2014-05-23 23:32 ` Sergei Shtylyov
@ 2014-05-27 21:13 ` Greg KH
  2014-05-27 21:53 ` Sergei Shtylyov
  2 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2014-05-27 21:13 UTC (permalink / raw)
  To: linux-sh

On Sat, May 24, 2014 at 03:32:21AM +0400, Sergei Shtylyov wrote:
> Hello.
> 
> On 04/10/2014 01:32 AM, Sergei Shtylyov wrote:
> 
> >Add the generic PHY support, analogous to the USB PHY support. Intended it to be
> >used with the PCI EHCI/OHCI drivers and the xHCI platform driver.
> 
> >Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> 
> >---
> >This patch is against the 'usb-next' branch of Greg KH's 'usb.git' repo.
> 
> >Changes in version 2:
> >- renamed the new 'phy' field of 'struct usb_phy' to 'gen_phy';
> >- resolved rejects due to removal of the first patch in the series.
> 
>    Is anyone going to apply this for 3.16? Time's running out...

As I don't see any patches that need this patch, I'm not likely to apply
it, sorry.  We don't add infrastructure without users...

Feel free to resend it when you have some code that needs it.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] usb: hcd: add generic PHY support
  2014-04-09 21:32 [PATCH v2] usb: hcd: add generic PHY support Sergei Shtylyov
  2014-05-23 23:32 ` Sergei Shtylyov
  2014-05-27 21:13 ` Greg KH
@ 2014-05-27 21:53 ` Sergei Shtylyov
  2 siblings, 0 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2014-05-27 21:53 UTC (permalink / raw)
  To: linux-sh

Hello.

On 05/28/2014 01:13 AM, Greg KH wrote:

>>> Add the generic PHY support, analogous to the USB PHY support. Intended it to be
>>> used with the PCI EHCI/OHCI drivers and the xHCI platform driver.

>>> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

>>> ---
>>> This patch is against the 'usb-next' branch of Greg KH's 'usb.git' repo.

>>> Changes in version 2:
>>> - renamed the new 'phy' field of 'struct usb_phy' to 'gen_phy';
>>> - resolved rejects due to removal of the first patch in the series.

>>     Is anyone going to apply this for 3.16? Time's running out...

> As I don't see any patches that need this patch, I'm not likely to apply
> it, sorry.  We don't add infrastructure without users...

> Feel free to resend it when you have some code that needs it.

    I certainly have the code that needs this to work but it's rather DTS 
files than the actual code, so I didn't CC linux-usb. :-)
    Unless you want to see the generic PHY driver, of course. I can CC 
linux-usb next time I repost it; however, this patch relies on the generic PHY 
framework itself rather than on a particular driver.

> thanks,

> greg k-h

WBR, Sergei


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-05-27 21:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-09 21:32 [PATCH v2] usb: hcd: add generic PHY support Sergei Shtylyov
2014-05-23 23:32 ` Sergei Shtylyov
2014-05-27 21:13 ` Greg KH
2014-05-27 21:53 ` Sergei Shtylyov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.