From: marex@denx.de (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 02/12] usb: chipidea: permit driver bindings pass phy pointer
Date: Tue, 22 May 2012 06:22:33 +0200 [thread overview]
Message-ID: <201205220622.33999.marex@denx.de> (raw)
In-Reply-To: <1337592237-5090-3-git-send-email-richard.zhao@freescale.com>
Dear Richard Zhao,
> Sometimes, the driver bindings may know what phy they use.
> For example, when using device tree, the usb controller may have a
> phandler pointing to usb phy.
>
> Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
Reviewed-by: Marek Vasut <marex@denx.de>
> ---
> drivers/usb/chipidea/ci.h | 2 ++
> drivers/usb/chipidea/core.c | 4 ++++
> drivers/usb/chipidea/host.c | 1 +
> drivers/usb/chipidea/udc.c | 11 +++++++----
> include/linux/usb/chipidea.h | 3 +++
> 5 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
> index 50911f8..71d7080 100644
> --- a/drivers/usb/chipidea/ci.h
> +++ b/drivers/usb/chipidea/ci.h
> @@ -160,6 +160,8 @@ struct ci13xxx {
>
> struct ci13xxx_udc_driver *udc_driver;
> int vbus_active;
> + /* FIXME: some day, we'll not use global phy */
> + bool global_phy;
> struct usb_phy *transceiver;
> struct usb_hcd *hcd;
> };
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index 15e03b3..0492786 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -365,6 +365,10 @@ static int __devinit ci_hdrc_probe(struct
> platform_device *pdev)
>
> ci->dev = dev;
> ci->udc_driver = dev->platform_data;
> + if (ci->udc_driver->phy)
> + ci->transceiver = ci->udc_driver->phy;
> + else
> + ci->global_phy = 1;
>
> ret = hw_device_init(ci, base);
> if (ret < 0) {
> diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> index 9eacd21..7bc11a5 100644
> --- a/drivers/usb/chipidea/host.c
> +++ b/drivers/usb/chipidea/host.c
> @@ -121,6 +121,7 @@ static int host_start(struct ci13xxx *ci)
> ehci = hcd_to_ehci(hcd);
> ehci->caps = ci->hw_bank.cap;
> ehci->has_hostpc = ci->hw_bank.lpm;
> + ehci->transceiver = ci->transceiver;
>
> ret = usb_add_hcd(hcd, 0, 0);
> if (ret)
> diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
> index 51f9694..22139fae 100644
> --- a/drivers/usb/chipidea/udc.c
> +++ b/drivers/usb/chipidea/udc.c
> @@ -1687,7 +1687,8 @@ static int udc_start(struct ci13xxx *udc)
>
> udc->gadget.ep0 = &udc->ep0in->ep;
>
> - udc->transceiver = usb_get_transceiver();
> + if (udc->global_phy) {
> + udc->transceiver = usb_get_transceiver();
>
> if (udc->udc_driver->flags & CI13XXX_REQUIRE_TRANSCEIVER) {
> if (udc->transceiver == NULL) {
> @@ -1731,7 +1732,8 @@ static int udc_start(struct ci13xxx *udc)
> remove_trans:
> if (udc->transceiver) {
> otg_set_peripheral(udc->transceiver->otg, &udc->gadget);
> - usb_put_transceiver(udc->transceiver);
> + if (udc->global_phy)
> + usb_put_transceiver(udc->transceiver);
> }
>
> dev_err(dev, "error = %i\n", retval);
> @@ -1740,7 +1742,7 @@ remove_dbg:
> unreg_device:
> device_unregister(&udc->gadget.dev);
> put_transceiver:
> - if (udc->transceiver)
> + if (udc->transceiver && udc->global_phy)
> usb_put_transceiver(udc->transceiver);
> free_pools:
> dma_pool_destroy(udc->td_pool);
> @@ -1774,7 +1776,8 @@ static void udc_stop(struct ci13xxx *udc)
>
> if (udc->transceiver) {
> otg_set_peripheral(udc->transceiver->otg, NULL);
> - usb_put_transceiver(udc->transceiver);
> + if (udc->global_phy)
> + usb_put_transceiver(udc->transceiver);
> }
> dbg_remove_files(&udc->gadget.dev);
> device_unregister(&udc->gadget.dev);
> diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h
> index edb90d6..c46c9e9 100644
> --- a/include/linux/usb/chipidea.h
> +++ b/include/linux/usb/chipidea.h
> @@ -5,12 +5,15 @@
> #ifndef __LINUX_USB_CHIPIDEA_H
> #define __LINUX_USB_CHIPIDEA_H
>
> +#include <linux/usb/otg.h>
> +
> struct ci13xxx;
> struct ci13xxx_udc_driver {
> const char *name;
> /* offset of the capability registers */
> uintptr_t capoffset;
> unsigned power_budget;
> + struct usb_phy *phy;
> unsigned long flags;
> #define CI13XXX_REGS_SHARED BIT(0)
> #define CI13XXX_REQUIRE_TRANSCEIVER BIT(1)
Best regards,
Marek Vasut
WARNING: multiple messages have this Message-ID (diff)
From: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
To: Richard Zhao <richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
B29397-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
B20596-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
alexander.shishkin-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org,
linuxzsc-MeMPY/F8WlbQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH v2 02/12] usb: chipidea: permit driver bindings pass phy pointer
Date: Tue, 22 May 2012 06:22:33 +0200 [thread overview]
Message-ID: <201205220622.33999.marex@denx.de> (raw)
In-Reply-To: <1337592237-5090-3-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Dear Richard Zhao,
> Sometimes, the driver bindings may know what phy they use.
> For example, when using device tree, the usb controller may have a
> phandler pointing to usb phy.
>
> Signed-off-by: Richard Zhao <richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Reviewed-by: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
> ---
> drivers/usb/chipidea/ci.h | 2 ++
> drivers/usb/chipidea/core.c | 4 ++++
> drivers/usb/chipidea/host.c | 1 +
> drivers/usb/chipidea/udc.c | 11 +++++++----
> include/linux/usb/chipidea.h | 3 +++
> 5 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
> index 50911f8..71d7080 100644
> --- a/drivers/usb/chipidea/ci.h
> +++ b/drivers/usb/chipidea/ci.h
> @@ -160,6 +160,8 @@ struct ci13xxx {
>
> struct ci13xxx_udc_driver *udc_driver;
> int vbus_active;
> + /* FIXME: some day, we'll not use global phy */
> + bool global_phy;
> struct usb_phy *transceiver;
> struct usb_hcd *hcd;
> };
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index 15e03b3..0492786 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -365,6 +365,10 @@ static int __devinit ci_hdrc_probe(struct
> platform_device *pdev)
>
> ci->dev = dev;
> ci->udc_driver = dev->platform_data;
> + if (ci->udc_driver->phy)
> + ci->transceiver = ci->udc_driver->phy;
> + else
> + ci->global_phy = 1;
>
> ret = hw_device_init(ci, base);
> if (ret < 0) {
> diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> index 9eacd21..7bc11a5 100644
> --- a/drivers/usb/chipidea/host.c
> +++ b/drivers/usb/chipidea/host.c
> @@ -121,6 +121,7 @@ static int host_start(struct ci13xxx *ci)
> ehci = hcd_to_ehci(hcd);
> ehci->caps = ci->hw_bank.cap;
> ehci->has_hostpc = ci->hw_bank.lpm;
> + ehci->transceiver = ci->transceiver;
>
> ret = usb_add_hcd(hcd, 0, 0);
> if (ret)
> diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
> index 51f9694..22139fae 100644
> --- a/drivers/usb/chipidea/udc.c
> +++ b/drivers/usb/chipidea/udc.c
> @@ -1687,7 +1687,8 @@ static int udc_start(struct ci13xxx *udc)
>
> udc->gadget.ep0 = &udc->ep0in->ep;
>
> - udc->transceiver = usb_get_transceiver();
> + if (udc->global_phy) {
> + udc->transceiver = usb_get_transceiver();
>
> if (udc->udc_driver->flags & CI13XXX_REQUIRE_TRANSCEIVER) {
> if (udc->transceiver == NULL) {
> @@ -1731,7 +1732,8 @@ static int udc_start(struct ci13xxx *udc)
> remove_trans:
> if (udc->transceiver) {
> otg_set_peripheral(udc->transceiver->otg, &udc->gadget);
> - usb_put_transceiver(udc->transceiver);
> + if (udc->global_phy)
> + usb_put_transceiver(udc->transceiver);
> }
>
> dev_err(dev, "error = %i\n", retval);
> @@ -1740,7 +1742,7 @@ remove_dbg:
> unreg_device:
> device_unregister(&udc->gadget.dev);
> put_transceiver:
> - if (udc->transceiver)
> + if (udc->transceiver && udc->global_phy)
> usb_put_transceiver(udc->transceiver);
> free_pools:
> dma_pool_destroy(udc->td_pool);
> @@ -1774,7 +1776,8 @@ static void udc_stop(struct ci13xxx *udc)
>
> if (udc->transceiver) {
> otg_set_peripheral(udc->transceiver->otg, NULL);
> - usb_put_transceiver(udc->transceiver);
> + if (udc->global_phy)
> + usb_put_transceiver(udc->transceiver);
> }
> dbg_remove_files(&udc->gadget.dev);
> device_unregister(&udc->gadget.dev);
> diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h
> index edb90d6..c46c9e9 100644
> --- a/include/linux/usb/chipidea.h
> +++ b/include/linux/usb/chipidea.h
> @@ -5,12 +5,15 @@
> #ifndef __LINUX_USB_CHIPIDEA_H
> #define __LINUX_USB_CHIPIDEA_H
>
> +#include <linux/usb/otg.h>
> +
> struct ci13xxx;
> struct ci13xxx_udc_driver {
> const char *name;
> /* offset of the capability registers */
> uintptr_t capoffset;
> unsigned power_budget;
> + struct usb_phy *phy;
> unsigned long flags;
> #define CI13XXX_REGS_SHARED BIT(0)
> #define CI13XXX_REQUIRE_TRANSCEIVER BIT(1)
Best regards,
Marek Vasut
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-05-22 4:22 UTC|newest]
Thread overview: 182+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-21 9:23 [PATCH v2 00/12] add imx usb driver for mx28/6x Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 01/12] usb: otg: add notify_connect_change callback Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-21 9:26 ` Felipe Balbi
2012-05-21 9:26 ` Felipe Balbi
2012-05-21 9:36 ` Richard Zhao
2012-05-21 9:36 ` Richard Zhao
2012-05-21 9:38 ` Felipe Balbi
2012-05-21 9:38 ` Felipe Balbi
2012-05-21 10:19 ` Richard Zhao
2012-05-21 10:19 ` Richard Zhao
2012-05-21 13:03 ` Greg KH
2012-05-21 13:03 ` Greg KH
2012-05-21 13:05 ` Greg KH
2012-05-21 13:05 ` Greg KH
2012-05-21 17:36 ` Marek Vasut
2012-05-21 17:36 ` Marek Vasut
2012-05-21 17:47 ` Greg KH
2012-05-21 17:47 ` Greg KH
2012-05-21 18:32 ` Marek Vasut
2012-05-21 18:32 ` Marek Vasut
2012-05-21 18:40 ` Greg KH
2012-05-21 18:40 ` Greg KH
2012-05-21 19:27 ` Marek Vasut
2012-05-21 19:27 ` Marek Vasut
2012-05-22 0:27 ` Richard Zhao
2012-05-22 0:27 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 02/12] usb: chipidea: permit driver bindings pass phy pointer Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 4:22 ` Marek Vasut [this message]
2012-05-22 4:22 ` Marek Vasut
2012-05-22 9:59 ` Alexander Shishkin
2012-05-22 9:59 ` Alexander Shishkin
2012-05-22 14:07 ` Marek Vasut
2012-05-22 14:07 ` Marek Vasut
2012-05-22 15:14 ` Richard Zhao
2012-05-22 15:14 ` Richard Zhao
2012-05-23 1:35 ` Chen Peter-B29397
2012-05-23 1:35 ` Chen Peter-B29397
2012-05-23 8:08 ` Alexander Shishkin
2012-05-23 8:08 ` Alexander Shishkin
2012-05-21 9:23 ` [PATCH v2 03/12] usb: ehci-hcd: notify phy when connect change Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 4:23 ` Marek Vasut
2012-05-22 4:23 ` Marek Vasut
2012-05-22 4:36 ` Richard Zhao
2012-05-22 4:36 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 04/12] usb: otg: add basic mxs phy driver support Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 05/12] usb: chipidea: add imx driver binding Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 4:30 ` Marek Vasut
2012-05-22 4:30 ` Marek Vasut
2012-05-22 4:51 ` Richard Zhao
2012-05-22 4:51 ` Richard Zhao
2012-05-22 9:56 ` Alexander Shishkin
2012-05-22 9:56 ` Alexander Shishkin
2012-05-22 10:06 ` Felipe Balbi
2012-05-22 10:06 ` Felipe Balbi
2012-05-22 10:31 ` Richard Zhao
2012-05-22 10:31 ` Richard Zhao
2012-05-22 10:35 ` Felipe Balbi
2012-05-22 10:35 ` Felipe Balbi
2012-05-22 10:41 ` Alexander Shishkin
2012-05-22 10:41 ` Alexander Shishkin
2012-05-22 15:06 ` Richard Zhao
2012-05-22 15:06 ` Richard Zhao
2012-05-23 13:02 ` Alexander Shishkin
2012-05-23 13:02 ` Alexander Shishkin
2012-05-23 13:09 ` Felipe Balbi
2012-05-23 13:09 ` Felipe Balbi
2012-05-23 13:13 ` Alexander Shishkin
2012-05-23 13:13 ` Alexander Shishkin
2012-05-22 13:52 ` Shawn Guo
2012-05-22 13:52 ` Shawn Guo
2012-05-22 13:55 ` Felipe Balbi
2012-05-22 13:55 ` Felipe Balbi
2012-05-22 10:21 ` Alexander Shishkin
2012-05-22 10:21 ` Alexander Shishkin
2012-05-22 10:24 ` Alexander Shishkin
2012-05-22 10:24 ` Alexander Shishkin
2012-05-22 15:30 ` Richard Zhao
2012-05-22 15:30 ` Richard Zhao
2012-05-22 15:28 ` Richard Zhao
2012-05-22 15:28 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 06/12] ARM: imx6q: correct device name of usbphy and usb controller clock export Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 4:31 ` Marek Vasut
2012-05-22 4:31 ` Marek Vasut
2012-05-22 4:56 ` Richard Zhao
2012-05-22 4:56 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 07/12] ARM: imx6q: add config-on-boot gpios Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 3:17 ` Shawn Guo
2012-05-22 3:17 ` Shawn Guo
2012-05-22 3:25 ` Marek Vasut
2012-05-22 3:25 ` Marek Vasut
2012-05-22 3:32 ` Shawn Guo
2012-05-22 3:32 ` Shawn Guo
2012-05-22 4:20 ` Marek Vasut
2012-05-22 4:20 ` Marek Vasut
2012-05-22 4:42 ` Shawn Guo
2012-05-22 4:42 ` Shawn Guo
2012-05-22 5:22 ` Marek Vasut
2012-05-22 5:22 ` Marek Vasut
2012-05-22 5:25 ` Shawn Guo
2012-05-22 5:25 ` Shawn Guo
2012-05-22 5:27 ` Marek Vasut
2012-05-22 5:27 ` Marek Vasut
2012-05-22 6:07 ` Richard Zhao
2012-05-22 6:07 ` Richard Zhao
2012-05-22 3:38 ` Richard Zhao
2012-05-22 3:38 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 08/12] ARM: imx6q: add usbphy clocks Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 4:32 ` Marek Vasut
2012-05-22 4:32 ` Marek Vasut
2012-05-22 4:45 ` Shawn Guo
2012-05-22 4:45 ` Shawn Guo
2012-05-22 5:22 ` Marek Vasut
2012-05-22 5:22 ` Marek Vasut
2012-05-22 4:59 ` Richard Zhao
2012-05-22 4:59 ` Richard Zhao
2012-05-22 5:37 ` Shawn Guo
2012-05-22 5:37 ` Shawn Guo
2012-05-22 6:08 ` Richard Zhao
2012-05-22 6:08 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 09/12] ARM: imx6q: disable usb charger detector Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 3:48 ` Shawn Guo
2012-05-22 3:48 ` Shawn Guo
2012-05-22 4:32 ` Richard Zhao
2012-05-22 4:32 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 10/12] ARM: dts: imx6q-sabrelite: add usb devices Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 5:10 ` Shawn Guo
2012-05-22 5:10 ` Shawn Guo
2012-05-22 5:59 ` Richard Zhao
2012-05-22 5:59 ` Richard Zhao
2012-05-22 6:08 ` Shawn Guo
2012-05-22 6:08 ` Shawn Guo
2012-05-22 6:19 ` Richard Zhao
2012-05-22 6:19 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 11/12] ARM: mxs: clk_register_clkdev mx28 usb clocks Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 4:48 ` Shawn Guo
2012-05-22 4:48 ` Shawn Guo
2012-05-22 5:01 ` Richard Zhao
2012-05-22 5:01 ` Richard Zhao
2012-05-21 9:23 ` [PATCH v2 12/12] ARM: dts: imx28-evk: add usb devices Richard Zhao
2012-05-21 9:23 ` Richard Zhao
2012-05-22 4:52 ` Shawn Guo
2012-05-22 4:52 ` Shawn Guo
2012-05-22 5:03 ` Richard Zhao
2012-05-22 5:03 ` Richard Zhao
2012-05-22 5:24 ` Marek Vasut
2012-05-22 5:24 ` Marek Vasut
2012-05-21 19:34 ` [PATCH v2 00/12] add imx usb driver for mx28/6x Fabio Estevam
2012-05-21 19:34 ` Fabio Estevam
2012-05-21 19:41 ` Marek Vasut
2012-05-21 19:41 ` Marek Vasut
2012-05-21 19:47 ` Subodh Nijsure
2012-05-21 19:47 ` Subodh Nijsure
2012-05-21 20:07 ` Marek Vasut
2012-05-21 20:07 ` Marek Vasut
2012-05-22 1:38 ` Chen Peter-B29397
2012-05-22 1:38 ` Chen Peter-B29397
2012-05-22 1:41 ` Richard Zhao
2012-05-22 1:41 ` Richard Zhao
2012-05-22 1:44 ` Chen Peter-B29397
2012-05-22 1:44 ` Chen Peter-B29397
2012-05-22 1:51 ` Richard Zhao
2012-05-22 1:51 ` Richard Zhao
2012-05-22 2:00 ` Shawn Guo
2012-05-22 2:00 ` Shawn Guo
2012-05-22 5:08 ` Richard Zhao
2012-05-22 5:08 ` Richard Zhao
2012-05-22 13:13 ` Dirk Behme
2012-05-22 13:13 ` Dirk Behme
2012-05-24 3:38 ` Richard Zhao
2012-05-24 3:38 ` Richard Zhao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201205220622.33999.marex@denx.de \
--to=marex@denx.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.