From: Peter Chen <hzpeterchen@gmail.com>
To: Stephen Boyd <stephen.boyd@linaro.org>
Cc: linux-usb@vger.kernel.org, Felipe Balbi <balbi@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Neil Armstrong <narmstrong@baylibre.com>,
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
Bjorn Andersson <bjorn.andersson@linaro.org>,
devicetree@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
Peter Chen <peter.chen@nxp.com>,
Andy Gross <andy.gross@linaro.org>,
Kishon Vijay Abraham I <kishon@ti.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 23/23] phy: Add support for Qualcomm's USB HS phy
Date: Mon, 24 Oct 2016 10:14:12 +0800 [thread overview]
Message-ID: <20161024021412.GA9840@b29397-desktop> (raw)
In-Reply-To: <147707842313.25848.12479294741874867656@sboyd-linaro>
On Fri, Oct 21, 2016 at 12:33:43PM -0700, Stephen Boyd wrote:
> Quoting Peter Chen (2016-10-20 19:20:30)
> > On Thu, Oct 20, 2016 at 04:20:38PM -0700, Stephen Boyd wrote:
> > > Quoting Stephen Boyd (2016-10-17 18:56:36)
> > > > +
> > > > +static int
> > > > +qcom_usb_hs_phy_vbus_notifier(struct notifier_block *nb, unsigned long event,
> > > > + void *ptr)
> > > > +{
> > > > + struct qcom_usb_hs_phy *uphy;
> > > > + int is_host;
> > > > + u8 addr;
> > > > +
> > > > + uphy = container_of(nb, struct qcom_usb_hs_phy, vbus_notify);
> > > > + is_host = extcon_get_cable_state_(uphy->id_edev, EXTCON_USB_HOST);
> > >
> > > Please don't apply this patch. This call now deadlocks on v4.9-rc1
> > > because of how extcon_get_cable_state_() now grabs a lock that is
> > > already held here when we're inside the notifier. It's not really
> > > required that we grab the lock in extcon there, but this has exposed a
> > > flaw in the logic anyway. We don't know if the id pin is going to toggle
> > > before or after this function is called, so we should really keep track
> > > of both vbus and id state in this driver and then do the same ulpi
> > > writes from two different notifiers for both vbus and id pin. We would
> > > be duplicating work sometimes, but that's pretty much the best solution
> > > I can come up with. Otherwise it's racy.
> > >
> >
> > Why you need to care id status? If EXTCON_USB event has happened, and
> > event is true, you can set, otherwise, it is clear operation, that's
> > to say you may not need have id extcon phandle, do you think so?
> >
>
> I need to add a comment to the code here because I forgot what was going
> on.
>
> Either way, this code is pulling D+ up when we're in device mode. We
> don't want to do the pullup if we're a host, and vbus extcon only tells
> us if the cable is attached so we can't just rely on that one bit of
> information.
>
> I suppose that's not really appropriate to do via extcon though in the
> phy driver though, so I'm thinking that it should be rewritten to use
> the phy_set_mode() feature of the phy framework. Basically,
> ci_udc_pullup() will call phy_set_mode() with PHY_MODE_USB_DEVICE or
> PHY_MODE_USB_HOST and then we can set or clear these bits in the ulpi
> register space. I think that will make things simpler here and things
> like soft-connect will work better. Sound good?
I agree with you, and you may notify controller role through
phy_set_mode at the controller probe and role switch routine.
--
Best Regards,
Peter Chen
WARNING: multiple messages have this Message-ID (diff)
From: hzpeterchen@gmail.com (Peter Chen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 23/23] phy: Add support for Qualcomm's USB HS phy
Date: Mon, 24 Oct 2016 10:14:12 +0800 [thread overview]
Message-ID: <20161024021412.GA9840@b29397-desktop> (raw)
In-Reply-To: <147707842313.25848.12479294741874867656@sboyd-linaro>
On Fri, Oct 21, 2016 at 12:33:43PM -0700, Stephen Boyd wrote:
> Quoting Peter Chen (2016-10-20 19:20:30)
> > On Thu, Oct 20, 2016 at 04:20:38PM -0700, Stephen Boyd wrote:
> > > Quoting Stephen Boyd (2016-10-17 18:56:36)
> > > > +
> > > > +static int
> > > > +qcom_usb_hs_phy_vbus_notifier(struct notifier_block *nb, unsigned long event,
> > > > + void *ptr)
> > > > +{
> > > > + struct qcom_usb_hs_phy *uphy;
> > > > + int is_host;
> > > > + u8 addr;
> > > > +
> > > > + uphy = container_of(nb, struct qcom_usb_hs_phy, vbus_notify);
> > > > + is_host = extcon_get_cable_state_(uphy->id_edev, EXTCON_USB_HOST);
> > >
> > > Please don't apply this patch. This call now deadlocks on v4.9-rc1
> > > because of how extcon_get_cable_state_() now grabs a lock that is
> > > already held here when we're inside the notifier. It's not really
> > > required that we grab the lock in extcon there, but this has exposed a
> > > flaw in the logic anyway. We don't know if the id pin is going to toggle
> > > before or after this function is called, so we should really keep track
> > > of both vbus and id state in this driver and then do the same ulpi
> > > writes from two different notifiers for both vbus and id pin. We would
> > > be duplicating work sometimes, but that's pretty much the best solution
> > > I can come up with. Otherwise it's racy.
> > >
> >
> > Why you need to care id status? If EXTCON_USB event has happened, and
> > event is true, you can set, otherwise, it is clear operation, that's
> > to say you may not need have id extcon phandle, do you think so?
> >
>
> I need to add a comment to the code here because I forgot what was going
> on.
>
> Either way, this code is pulling D+ up when we're in device mode. We
> don't want to do the pullup if we're a host, and vbus extcon only tells
> us if the cable is attached so we can't just rely on that one bit of
> information.
>
> I suppose that's not really appropriate to do via extcon though in the
> phy driver though, so I'm thinking that it should be rewritten to use
> the phy_set_mode() feature of the phy framework. Basically,
> ci_udc_pullup() will call phy_set_mode() with PHY_MODE_USB_DEVICE or
> PHY_MODE_USB_HOST and then we can set or clear these bits in the ulpi
> register space. I think that will make things simpler here and things
> like soft-connect will work better. Sound good?
I agree with you, and you may notify controller role through
phy_set_mode at the controller probe and role switch routine.
--
Best Regards,
Peter Chen
next prev parent reply other threads:[~2016-10-24 2:14 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-18 1:56 [PATCH v5 00/23] Support qcom's HSIC USB and rewrite USB2 HS support Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 03/23] usb: ulpi: Support device discovery via DT Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 16:44 ` Rob Herring
2016-10-18 16:44 ` Rob Herring
2016-11-11 11:02 ` Heikki Krogerus
2016-11-11 11:02 ` Heikki Krogerus
2016-10-18 1:56 ` [PATCH v5 04/23] usb: chipidea: Only read/write OTGSC from one place Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 05/23] usb: chipidea: Handle extcon events properly Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 06/23] usb: chipidea: Add platform flag for wrapper phy management Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 07/23] usb: chipidea: Notify events when switching host mode Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 08/23] usb: chipidea: Remove locking in ci_udc_start() Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 09/23] usb: chipidea: Add support for ULPI PHY bus Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 10/23] usb: chipidea: Consolidate extcon notifiers Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 11/23] usb: chipidea: Emulate OTGSC interrupt enable path Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-19 1:15 ` Peter Chen
2016-10-19 1:15 ` Peter Chen
2016-10-19 1:53 ` Stephen Boyd
2016-10-19 1:53 ` Stephen Boyd
2016-10-19 8:02 ` Peter Chen
2016-10-19 8:02 ` Peter Chen
2016-10-19 8:02 ` Peter Chen
2016-10-20 6:55 ` Stephen Boyd
2016-10-20 6:55 ` Stephen Boyd
2016-10-20 10:10 ` Peter Chen
2016-10-20 10:10 ` Peter Chen
2016-10-20 10:10 ` Peter Chen
2016-10-20 20:36 ` Stephen Boyd
2016-10-20 20:36 ` Stephen Boyd
2016-10-21 2:14 ` Peter Chen
2016-10-21 2:14 ` Peter Chen
2016-10-21 17:57 ` Stephen Boyd
2016-10-21 17:57 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 12/23] usb: chipidea: msm: Mark device as runtime pm active Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 13/23] usb: chipidea: msm: Rely on core to override AHBBURST Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 14/23] usb: chipidea: msm: Use hw_write_id_reg() instead of writel Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 15/23] usb: chipidea: msm: Add proper clk and reset support Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 16/23] usb: chipidea: msm: Mux over secondary phy at the right time Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 17/23] usb: chipidea: msm: Restore wrapper settings after reset Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 18/23] usb: chipidea: msm: Make platform data driver local instead of global Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
[not found] ` <20161018015636.11701-1-stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-18 1:56 ` [PATCH v5 01/23] of: device: Support loading a module with OF based modalias Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 02/23] of: device: Export of_device_{get_modalias,uvent_modalias} to modules Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 02/23] of: device: Export of_device_{get_modalias, uvent_modalias} " Stephen Boyd
[not found] ` <20161018015636.11701-3-stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-18 5:20 ` Chen-Yu Tsai
2016-10-18 5:20 ` Chen-Yu Tsai
2016-10-18 5:20 ` Chen-Yu Tsai
2016-10-24 12:19 ` Chen-Yu Tsai
2016-10-24 12:19 ` Chen-Yu Tsai
2016-10-24 19:48 ` Stephen Boyd
2016-10-24 19:48 ` Stephen Boyd
2016-10-25 1:16 ` Peter Chen
2016-10-25 1:16 ` Peter Chen
2016-11-04 20:51 ` Stephen Boyd
2016-11-04 20:51 ` Stephen Boyd
2016-11-07 1:29 ` Peter Chen
2016-11-07 1:29 ` Peter Chen
2016-11-07 1:29 ` Peter Chen
2016-11-07 1:56 ` Chen-Yu Tsai
2016-11-07 1:56 ` Chen-Yu Tsai
[not found] ` <CAGb2v66C15fU1b2+xNDV8Fv2kmmKXyUknA8=9wXztUcs8CNKLg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-11-10 21:42 ` Rob Herring
2016-11-10 21:42 ` Rob Herring
2016-11-10 21:42 ` Rob Herring
2016-11-11 3:01 ` Chen-Yu Tsai
2016-11-11 3:01 ` Chen-Yu Tsai
2016-11-11 4:25 ` Javier Martinez Canillas
2016-11-11 4:25 ` Javier Martinez Canillas
2016-11-11 4:25 ` Javier Martinez Canillas
2016-10-18 1:56 ` [PATCH v5 19/23] usb: chipidea: msm: Add reset controller for PHY POR bit Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 20/23] usb: chipidea: msm: Handle phy power states Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 23/23] phy: Add support for Qualcomm's USB HS phy Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 16:46 ` Rob Herring
2016-10-18 16:46 ` Rob Herring
2016-10-18 16:47 ` Rob Herring
2016-10-18 16:47 ` Rob Herring
[not found] ` <20161018015636.11701-24-stephen.boyd-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-20 23:20 ` Stephen Boyd
2016-10-20 23:20 ` Stephen Boyd
2016-10-20 23:20 ` Stephen Boyd
2016-10-21 2:20 ` Peter Chen
2016-10-21 2:20 ` Peter Chen
2016-10-21 19:33 ` Stephen Boyd
2016-10-21 19:33 ` Stephen Boyd
2016-10-24 2:14 ` Peter Chen [this message]
2016-10-24 2:14 ` Peter Chen
2016-10-18 9:31 ` [PATCH v5 00/23] Support qcom's HSIC USB and rewrite USB2 HS support Peter Chen
2016-10-18 9:31 ` Peter Chen
2016-10-18 9:31 ` Peter Chen
2016-10-18 20:51 ` Stephen Boyd
2016-10-18 20:51 ` Stephen Boyd
2016-11-11 7:40 ` Peter Chen
2016-11-11 7:40 ` Peter Chen
2016-11-11 7:40 ` Peter Chen
2016-11-14 19:35 ` Stephen Boyd
2016-11-14 19:35 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 21/23] usb: chipidea: msm: Be silent on probe defer errors Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
2016-10-18 1:56 ` [PATCH v5 22/23] phy: Add support for Qualcomm's USB HSIC phy Stephen Boyd
2016-10-18 1:56 ` Stephen Boyd
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=20161024021412.GA9840@b29397-desktop \
--to=hzpeterchen@gmail.com \
--cc=andy.gross@linaro.org \
--cc=arnd@arndb.de \
--cc=balbi@kernel.org \
--cc=bjorn.andersson@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=kishon@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=narmstrong@baylibre.com \
--cc=peter.chen@nxp.com \
--cc=robh+dt@kernel.org \
--cc=stephen.boyd@linaro.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.