From: Richard Zhao <richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
To: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
Cc: B29397-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
B20596-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
marex-ynQEQJNshbs@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,
richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
linuxzsc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
balbi-l0cyMroinI0@public.gmane.org
Subject: [PATCH v7 12/14] usb: chipidea: permit driver bindings pass phy pointer
Date: Mon, 25 Jun 2012 14:56:29 +0800 [thread overview]
Message-ID: <1340607391-16380-13-git-send-email-richard.zhao@freescale.com> (raw)
In-Reply-To: <1340607391-16380-1-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
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>
Acked-by: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>
Tested-by: Subodh Nijsure <snijsure-4jo+YWezP1RWk0Htik3J/w@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 9655e35..d738603 100644
--- a/drivers/usb/chipidea/ci.h
+++ b/drivers/usb/chipidea/ci.h
@@ -160,6 +160,8 @@ struct ci13xxx {
struct ci13xxx_platform_data *platdata;
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 39603d7..1083585 100644
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -419,6 +419,10 @@ static int __devinit ci_hdrc_probe(struct platform_device *pdev)
ci->dev = dev;
ci->platdata = dev->platform_data;
+ if (ci->platdata->phy)
+ ci->transceiver = ci->platdata->phy;
+ else
+ ci->global_phy = true;
ret = hw_device_init(ci, base);
if (ret < 0) {
diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
index 4a4fdb8..ebff9f4 100644
--- a/drivers/usb/chipidea/host.c
+++ b/drivers/usb/chipidea/host.c
@@ -117,6 +117,7 @@ static int host_start(struct ci13xxx *ci)
hcd->has_tt = 1;
hcd->power_budget = ci->platdata->power_budget;
+ hcd->phy = ci->transceiver;
ehci = hcd_to_ehci(hcd);
ehci->caps = ci->hw_bank.cap;
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index ca9b387..ebc88c1 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -1684,7 +1684,8 @@ static int udc_start(struct ci13xxx *ci)
ci->gadget.ep0 = &ci->ep0in->ep;
- ci->transceiver = usb_get_transceiver();
+ if (ci->global_phy)
+ ci->transceiver = usb_get_transceiver();
if (ci->platdata->flags & CI13XXX_REQUIRE_TRANSCEIVER) {
if (ci->transceiver == NULL) {
@@ -1728,7 +1729,8 @@ static int udc_start(struct ci13xxx *ci)
remove_trans:
if (ci->transceiver) {
otg_set_peripheral(ci->transceiver->otg, &ci->gadget);
- usb_put_transceiver(ci->transceiver);
+ if (ci->global_phy)
+ usb_put_transceiver(ci->transceiver);
}
dev_err(dev, "error = %i\n", retval);
@@ -1737,7 +1739,7 @@ remove_dbg:
unreg_device:
device_unregister(&ci->gadget.dev);
put_transceiver:
- if (ci->transceiver)
+ if (ci->transceiver && ci->global_phy)
usb_put_transceiver(ci->transceiver);
free_pools:
dma_pool_destroy(ci->td_pool);
@@ -1771,7 +1773,8 @@ static void udc_stop(struct ci13xxx *ci)
if (ci->transceiver) {
otg_set_peripheral(ci->transceiver->otg, NULL);
- usb_put_transceiver(ci->transceiver);
+ if (ci->global_phy)
+ usb_put_transceiver(ci->transceiver);
}
dbg_remove_files(&ci->gadget.dev);
device_unregister(&ci->gadget.dev);
diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h
index be078f0..544825d 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_platform_data {
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)
--
1.7.9.5
--
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-06-25 6:56 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-25 6:56 [PATCH v7 00/14] add imx usb driver based on Greg next tree Richard Zhao
[not found] ` <1340607391-16380-1-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25 6:56 ` [PATCH v7 01/14] usb: chipidea: remove unneeded NULL check Richard Zhao
[not found] ` <1340607391-16380-2-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:43 ` Greg KH
[not found] ` <20120626214311.GA4878-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2012-06-27 6:24 ` Richard Zhao
2012-06-26 21:51 ` Marek Vasut
2012-06-25 6:56 ` [PATCH v7 02/14] usb: chipidea: drop useless arch-check Richard Zhao
[not found] ` <1340607391-16380-3-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:52 ` Marek Vasut
2012-06-25 6:56 ` [PATCH v7 03/14] usb: chipidea: msm: add missing section annotation Richard Zhao
[not found] ` <1340607391-16380-4-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:52 ` Marek Vasut
2012-06-25 6:56 ` [PATCH v7 04/14] usb: chipidea: msm: add remove method Richard Zhao
[not found] ` <1340607391-16380-5-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25 13:18 ` ABRAHAM, KISHON VIJAY
[not found] ` <CAAe_U6JJe4U+oMR+xj4TwdNsXEzHNhQ0+t-PUPJT=kezHCqL2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-25 13:33 ` Marek Vasut
[not found] ` <201206251533.20788.marex-ynQEQJNshbs@public.gmane.org>
2012-06-25 13:44 ` ABRAHAM, KISHON VIJAY
[not found] ` <CAAe_U6JL5P26zJDOWaV3Z=uOmhJddBKE9B3r=OrzEtPEuM3vnA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-25 13:55 ` Marek Vasut
[not found] ` <201206251555.22820.marex-ynQEQJNshbs@public.gmane.org>
2012-06-25 14:14 ` Felipe Balbi
[not found] ` <20120625141443.GB601-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-06-25 14:20 ` Marek Vasut
2012-06-25 6:56 ` [PATCH v7 05/14] USB: Chipidea: rename struct ci13xxx_udc_driver to struct ci13xxx_platform_data Richard Zhao
[not found] ` <1340607391-16380-6-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:54 ` Marek Vasut
[not found] ` <201206262354.03543.marex-ynQEQJNshbs@public.gmane.org>
2012-06-27 6:30 ` Richard Zhao
2012-06-25 6:56 ` [PATCH v7 06/14] USB: Chipidea: rename struct ci13xxx variables from udc to ci Richard Zhao
[not found] ` <1340607391-16380-7-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:55 ` Marek Vasut
2012-06-27 12:42 ` Marc Kleine-Budde
[not found] ` <4FEAFFB7.7010906-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-06-28 1:59 ` Richard Zhao
2012-06-25 6:56 ` [PATCH v7 07/14] USB: Chipidea: add unified ci13xxx_{add,remove}_device for platform drivers Richard Zhao
2012-06-25 6:56 ` [PATCH v7 08/14] USB: Chipidea: add ci13xxx device id management Richard Zhao
[not found] ` <1340607391-16380-9-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25 9:48 ` Marc Kleine-Budde
2012-06-25 10:03 ` Richard Zhao
[not found] ` <513f64cb-8eac-4e51-81f7-e3824d96d870-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2012-06-25 10:17 ` Marc Kleine-Budde
[not found] ` <4FE83AA9.6030507-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-06-27 5:42 ` Richard Zhao
[not found] ` <20120627054231.GA21750-iWYTGMXpHj9ITqJhDdzsOjpauB2SiJktrE5yTffgRl4@public.gmane.org>
2012-06-27 11:49 ` Marek Vasut
[not found] ` <201206271349.45641.marex-ynQEQJNshbs@public.gmane.org>
2012-06-27 12:02 ` Marc Kleine-Budde
2012-06-25 6:56 ` [PATCH v7 09/14] usb: chipidea: select USB_EHCI_ROOT_HUB_TT in USB_CHIPIDEA_HOST of Kconfig Richard Zhao
[not found] ` <1340607391-16380-10-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:58 ` Marek Vasut
2012-06-25 6:56 ` [PATCH v7 10/14] usb: otg: add notify_connect/notify_disconnect callback Richard Zhao
2012-06-25 6:56 ` [PATCH v7 11/14] USB: notify phy when root hub port connect change Richard Zhao
2012-06-25 6:56 ` Richard Zhao [this message]
2012-06-25 6:56 ` [PATCH v7 13/14] usb: otg: add basic mxs phy driver support Richard Zhao
[not found] ` <1340607391-16380-14-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-27 6:37 ` Richard Zhao
2012-06-25 6:56 ` [PATCH v7 14/14] usb: chipidea: add imx platform driver Richard Zhao
[not found] ` <1340607391-16380-15-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25 10:33 ` Marc Kleine-Budde
[not found] ` <4FE83E96.5090004-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-06-27 6:20 ` Richard Zhao
[not found] ` <20120627062005.GB21750-iWYTGMXpHj9ITqJhDdzsOjpauB2SiJktrE5yTffgRl4@public.gmane.org>
2012-06-27 9:46 ` Marc Kleine-Budde
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=1340607391-16380-13-git-send-email-richard.zhao@freescale.com \
--to=richard.zhao-kzfg59tc24xl57midrcfdg@public.gmane.org \
--cc=B20596-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=B29397-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=alexander.shishkin-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=balbi-l0cyMroinI0@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linuxzsc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=marex-ynQEQJNshbs@public.gmane.org \
--cc=shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).