From: Peter Chen <peter.chen@freescale.com> To: "Ivan T. Ivanov" <iivanov@mm-sol.com> Cc: alexander.shishkin@linux.intel.com, gregkh@linuxfoundation.org, rob.herring@calxeda.com, pawel.moll@arm.com, mark.rutland@arm.com, swarren@wwwdotorg.org, ijc+devicetree@hellion.org.uk, davidb@codeaurora.org, linux-usb@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 4/4] usb: chipidea: msm: Use USB PHY API to control PHY state Date: Wed, 4 Dec 2013 21:38:59 +0800 [thread overview] Message-ID: <20131204133858.GC1573@shlinux1.ap.freescale.net> (raw) In-Reply-To: <1386149754.16040.21.camel@iivanov-dev.int.mm-sol.com> On Wed, Dec 04, 2013 at 11:35:54AM +0200, Ivan T. Ivanov wrote: > > Hi Peter, > > On Wed, 2013-12-04 at 13:37 +0800, Peter Chen wrote: > > On Mon, Nov 11, 2013 at 04:36:09PM +0200, Ivan T. Ivanov wrote: > > > > > > Hi Peter, > > > > > > On Mon, 2013-11-11 at 21:59 +0800, Peter Chen wrote: > > > > On Mon, Nov 11, 2013 at 03:35:37PM +0200, Ivan T. Ivanov wrote: > > > > > From: "Ivan T. Ivanov" <iivanov@mm-sol.com> > > > > > > > > > > PHY drivers keep track of the current state of the hardware, > > > > > so don't change PHY settings under it. > > > > > > > > > > Signed-off-by: Ivan T. Ivanov <iivanov@mm-sol.com> > > > > > --- > > > > > drivers/usb/chipidea/ci_hdrc_msm.c | 9 ++------- > > > > > 1 file changed, 2 insertions(+), 7 deletions(-) > > > > > > > > > > diff --git a/drivers/usb/chipidea/ci_hdrc_msm.c b/drivers/usb/chipidea/ci_hdrc_msm.c > > > > > index e9624f3..338b209 100644 > > > > > --- a/drivers/usb/chipidea/ci_hdrc_msm.c > > > > > +++ b/drivers/usb/chipidea/ci_hdrc_msm.c > > > > > @@ -20,13 +20,11 @@ > > > > > static void ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event) > > > > > { > > > > > struct device *dev = ci->gadget.dev.parent; > > > > > - int val; > > > > > > > > > > switch (event) { > > > > > case CI_HDRC_CONTROLLER_RESET_EVENT: > > > > > dev_dbg(dev, "CI_HDRC_CONTROLLER_RESET_EVENT received\n"); > > > > > - writel(0, USB_AHBBURST); > > > > > - writel(0, USB_AHBMODE); > > > > > + usb_phy_init(ci->transceiver); > > > > > > > > It will reset the PHY, but your comment is "don't change PHY settings under it" > > > > > > :-). This function is exported by PHY drivers, so they will know how > > > to handle this change. > > > > > > > > > > > > break; > > > > > case CI_HDRC_CONTROLLER_STOPPED_EVENT: > > > > > dev_dbg(dev, "CI_HDRC_CONTROLLER_STOPPED_EVENT received\n"); > > > > > @@ -34,10 +32,7 @@ static void ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event) > > > > > * Put the transceiver in non-driving mode. Otherwise host > > > > > * may not detect soft-disconnection. > > > > > */ > > > > > - val = usb_phy_io_read(ci->transceiver, ULPI_FUNC_CTRL); > > > > > - val &= ~ULPI_FUNC_CTRL_OPMODE_MASK; > > > > > - val |= ULPI_FUNC_CTRL_OPMODE_NONDRIVING; > > > > > - usb_phy_io_write(ci->transceiver, val, ULPI_FUNC_CTRL); > > > > > + usb_phy_notify_disconnect(ci->transceiver, USB_SPEED_UNKNOWN); > > > > > > > > Where you have implemented .notify_disconnect? > > > > I have not found it at your phy driver. > > > > > > Yep, I will post PHY driver changes shortly. Meanwhile this should > > > not break existing board file based platforms, because not of them > > > could be compiled (HTC Dream, Halibut Board) and DT based platforms > > > are sill work in progress. > > > > > > > Hi Ivan, I am going to apply this msm chipidea patchset, but the change > > in this file is different with its original meaning. > > What did you mean? > > CI_HDRC_CONTROLLER_RESET_EVENT -> usb_phy_init() > Take wherever actions are needed to put device in known state. ? At current code, it only sets two AHB parameters which should be only related to controller but your patch init the whole PHY, look at msm_otg_reset, it does many other things, like phy reset, controller reset, etc. Does the partial otg fsm at msm_otg_sm_work will be called or not? If it is not called, then, it is OK you just use msm_otg_reset here. > > CI_HDRC_CONTROLLER_STOPPED_EVENT -> usb_phy_notify_disconnect() > Emitted after ci->driver->disconnect(&ci->gadget); I just see your [PATCH v4 14/15] usb: phy: msm: Handle disconnect events, then, it is ok now. By the way, do I need to wait your phy patches are queued, otherwise, it may not work? > > Probably I am missing something. > > > > Have you > > tested at existing platforms? > > > I have 8074 based DragonBoard which I used for testing. > CV Test Suite engine "Chapter 9 tests" are passing except > "Halt Endpoint Test". I mean with your patch, the old non-dt platform can work or not? -- Best Regards, Peter Chen
WARNING: multiple messages have this Message-ID (diff)
From: Peter Chen <peter.chen@freescale.com> To: "Ivan T. Ivanov" <iivanov@mm-sol.com> Cc: <alexander.shishkin@linux.intel.com>, <gregkh@linuxfoundation.org>, <rob.herring@calxeda.com>, <pawel.moll@arm.com>, <mark.rutland@arm.com>, <swarren@wwwdotorg.org>, <ijc+devicetree@hellion.org.uk>, <davidb@codeaurora.org>, <linux-usb@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>, <linux-kernel@vger.kernel.org> Subject: Re: [PATCH 4/4] usb: chipidea: msm: Use USB PHY API to control PHY state Date: Wed, 4 Dec 2013 21:38:59 +0800 [thread overview] Message-ID: <20131204133858.GC1573@shlinux1.ap.freescale.net> (raw) In-Reply-To: <1386149754.16040.21.camel@iivanov-dev.int.mm-sol.com> On Wed, Dec 04, 2013 at 11:35:54AM +0200, Ivan T. Ivanov wrote: > > Hi Peter, > > On Wed, 2013-12-04 at 13:37 +0800, Peter Chen wrote: > > On Mon, Nov 11, 2013 at 04:36:09PM +0200, Ivan T. Ivanov wrote: > > > > > > Hi Peter, > > > > > > On Mon, 2013-11-11 at 21:59 +0800, Peter Chen wrote: > > > > On Mon, Nov 11, 2013 at 03:35:37PM +0200, Ivan T. Ivanov wrote: > > > > > From: "Ivan T. Ivanov" <iivanov@mm-sol.com> > > > > > > > > > > PHY drivers keep track of the current state of the hardware, > > > > > so don't change PHY settings under it. > > > > > > > > > > Signed-off-by: Ivan T. Ivanov <iivanov@mm-sol.com> > > > > > --- > > > > > drivers/usb/chipidea/ci_hdrc_msm.c | 9 ++------- > > > > > 1 file changed, 2 insertions(+), 7 deletions(-) > > > > > > > > > > diff --git a/drivers/usb/chipidea/ci_hdrc_msm.c b/drivers/usb/chipidea/ci_hdrc_msm.c > > > > > index e9624f3..338b209 100644 > > > > > --- a/drivers/usb/chipidea/ci_hdrc_msm.c > > > > > +++ b/drivers/usb/chipidea/ci_hdrc_msm.c > > > > > @@ -20,13 +20,11 @@ > > > > > static void ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event) > > > > > { > > > > > struct device *dev = ci->gadget.dev.parent; > > > > > - int val; > > > > > > > > > > switch (event) { > > > > > case CI_HDRC_CONTROLLER_RESET_EVENT: > > > > > dev_dbg(dev, "CI_HDRC_CONTROLLER_RESET_EVENT received\n"); > > > > > - writel(0, USB_AHBBURST); > > > > > - writel(0, USB_AHBMODE); > > > > > + usb_phy_init(ci->transceiver); > > > > > > > > It will reset the PHY, but your comment is "don't change PHY settings under it" > > > > > > :-). This function is exported by PHY drivers, so they will know how > > > to handle this change. > > > > > > > > > > > > break; > > > > > case CI_HDRC_CONTROLLER_STOPPED_EVENT: > > > > > dev_dbg(dev, "CI_HDRC_CONTROLLER_STOPPED_EVENT received\n"); > > > > > @@ -34,10 +32,7 @@ static void ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event) > > > > > * Put the transceiver in non-driving mode. Otherwise host > > > > > * may not detect soft-disconnection. > > > > > */ > > > > > - val = usb_phy_io_read(ci->transceiver, ULPI_FUNC_CTRL); > > > > > - val &= ~ULPI_FUNC_CTRL_OPMODE_MASK; > > > > > - val |= ULPI_FUNC_CTRL_OPMODE_NONDRIVING; > > > > > - usb_phy_io_write(ci->transceiver, val, ULPI_FUNC_CTRL); > > > > > + usb_phy_notify_disconnect(ci->transceiver, USB_SPEED_UNKNOWN); > > > > > > > > Where you have implemented .notify_disconnect? > > > > I have not found it at your phy driver. > > > > > > Yep, I will post PHY driver changes shortly. Meanwhile this should > > > not break existing board file based platforms, because not of them > > > could be compiled (HTC Dream, Halibut Board) and DT based platforms > > > are sill work in progress. > > > > > > > Hi Ivan, I am going to apply this msm chipidea patchset, but the change > > in this file is different with its original meaning. > > What did you mean? > > CI_HDRC_CONTROLLER_RESET_EVENT -> usb_phy_init() > Take wherever actions are needed to put device in known state. ? At current code, it only sets two AHB parameters which should be only related to controller but your patch init the whole PHY, look at msm_otg_reset, it does many other things, like phy reset, controller reset, etc. Does the partial otg fsm at msm_otg_sm_work will be called or not? If it is not called, then, it is OK you just use msm_otg_reset here. > > CI_HDRC_CONTROLLER_STOPPED_EVENT -> usb_phy_notify_disconnect() > Emitted after ci->driver->disconnect(&ci->gadget); I just see your [PATCH v4 14/15] usb: phy: msm: Handle disconnect events, then, it is ok now. By the way, do I need to wait your phy patches are queued, otherwise, it may not work? > > Probably I am missing something. > > > > Have you > > tested at existing platforms? > > > I have 8074 based DragonBoard which I used for testing. > CV Test Suite engine "Chapter 9 tests" are passing except > "Halt Endpoint Test". I mean with your patch, the old non-dt platform can work or not? -- Best Regards, Peter Chen
next prev parent reply other threads:[~2013-12-04 14:08 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-11-11 13:35 [PATCH 0/4] usb: chipidea: msm: Clean and fix glue layer driver Ivan T. Ivanov [not found] ` <1384176937-1658-1-git-send-email-iivanov-NEYub+7Iv8PQT0dZR+AlfA@public.gmane.org> 2013-11-11 13:35 ` [PATCH 1/4] usb: chipidea: msm: Add device tree binding information Ivan T. Ivanov 2013-11-11 13:35 ` Ivan T. Ivanov 2013-12-04 5:40 ` Peter Chen 2013-12-04 5:40 ` Peter Chen 2013-12-04 8:33 ` Ivan T. Ivanov 2013-12-04 13:13 ` Peter Chen 2013-12-04 13:13 ` Peter Chen 2013-11-11 13:35 ` [PATCH 2/4] usb: chipidea: msm: Add device tree support Ivan T. Ivanov 2013-11-11 13:35 ` Ivan T. Ivanov 2013-11-11 13:35 ` [PATCH 3/4] usb: chipidea: msm: Initialize offset of the capability registers Ivan T. Ivanov [not found] ` <1384176937-1658-4-git-send-email-iivanov-NEYub+7Iv8PQT0dZR+AlfA@public.gmane.org> 2013-12-04 5:43 ` Peter Chen 2013-12-04 5:43 ` Peter Chen 2013-12-04 9:07 ` Ivan T. Ivanov 2013-11-11 13:35 ` [PATCH 4/4] usb: chipidea: msm: Use USB PHY API to control PHY state Ivan T. Ivanov 2013-11-11 13:59 ` Peter Chen 2013-11-11 13:59 ` Peter Chen 2013-11-11 14:36 ` Ivan T. Ivanov 2013-12-04 5:37 ` Peter Chen 2013-12-04 5:37 ` Peter Chen 2013-12-04 9:35 ` Ivan T. Ivanov 2013-12-04 13:38 ` Peter Chen [this message] 2013-12-04 13:38 ` Peter Chen 2013-12-11 10:26 ` Ivan T. Ivanov 2013-11-11 14:02 ` [PATCH 0/4] usb: chipidea: msm: Clean and fix glue layer driver Peter Chen 2013-11-11 14:02 ` Peter Chen 2013-11-11 14:49 ` Ivan T. Ivanov
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=20131204133858.GC1573@shlinux1.ap.freescale.net \ --to=peter.chen@freescale.com \ --cc=alexander.shishkin@linux.intel.com \ --cc=davidb@codeaurora.org \ --cc=gregkh@linuxfoundation.org \ --cc=iivanov@mm-sol.com \ --cc=ijc+devicetree@hellion.org.uk \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-usb@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=pawel.moll@arm.com \ --cc=rob.herring@calxeda.com \ --cc=swarren@wwwdotorg.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: linkBe 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.