linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] usb: phy: msm: Unregister driver interest for VBUS and ID events
@ 2015-08-18  7:56 Ivan T. Ivanov
  2015-08-24 17:11 ` Tim Bird
  0 siblings, 1 reply; 3+ messages in thread
From: Ivan T. Ivanov @ 2015-08-18  7:56 UTC (permalink / raw)
  To: Felipe Balbi, Tim Bird
  Cc: Greg Kroah-Hartman, linux-usb, linux-kernel, linux-arm-msm

Right now even if driver failed to probe extcon framework will
still deliver its VBUS and ID events, which will lead to random
exception codes.

Fix this by removing driver interest for VBUS and ID events when
probe fail.

Fixes: 591fc116f330 ("usb: phy: msm: Use extcon framework for VBUS and ID detection")

Reported-by: Tim Bird <tim.bird@sonymobile.com>
Signed-off-by: Ivan T. Ivanov <ivan.ivanov@linaro.org>
---
 drivers/usb/phy/phy-msm-usb.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
index 00c49bb1bd29..a9082567f114 100644
--- a/drivers/usb/phy/phy-msm-usb.c
+++ b/drivers/usb/phy/phy-msm-usb.c
@@ -1581,6 +1581,8 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
 		ret = extcon_register_interest(&motg->id.conn, ext_id->name,
 					       "USB-HOST", &motg->id.nb);
 		if (ret < 0) {
+			if (!IS_ERR(ext_vbus))
+				extcon_unregister_interest(&motg->vbus.conn);
 			dev_err(&pdev->dev, "register ID notifier failed\n");
 			return ret;
 		}
@@ -1630,15 +1632,6 @@ static int msm_otg_probe(struct platform_device *pdev)
 	if (!motg)
 		return -ENOMEM;

-	pdata = dev_get_platdata(&pdev->dev);
-	if (!pdata) {
-		if (!np)
-			return -ENXIO;
-		ret = msm_otg_read_dt(pdev, motg);
-		if (ret)
-			return ret;
-	}
-
 	motg->phy.otg = devm_kzalloc(&pdev->dev, sizeof(struct usb_otg),
 				     GFP_KERNEL);
 	if (!motg->phy.otg)
@@ -1709,6 +1702,15 @@ static int msm_otg_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;

+	pdata = dev_get_platdata(&pdev->dev);
+	if (!pdata) {
+		if (!np)
+			return -ENXIO;
+		ret = msm_otg_read_dt(pdev, motg);
+		if (ret)
+			return ret;
+	}
+
 	motg->vddcx = regs[0].consumer;
 	motg->v3p3  = regs[1].consumer;
 	motg->v1p8  = regs[2].consumer;
@@ -1793,6 +1795,12 @@ disable_clks:
 	clk_disable_unprepare(motg->clk);
 	if (!IS_ERR(motg->core_clk))
 		clk_disable_unprepare(motg->core_clk);
+
+	if (motg->id.conn.edev)
+		extcon_unregister_interest(&motg->id.conn);
+	if (motg->vbus.conn.edev)
+		extcon_unregister_interest(&motg->vbus.conn);
+
 	return ret;
 }

--
1.9.1

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

* Re: [PATCH] usb: phy: msm: Unregister driver interest for VBUS and ID events
  2015-08-18  7:56 [PATCH] usb: phy: msm: Unregister driver interest for VBUS and ID events Ivan T. Ivanov
@ 2015-08-24 17:11 ` Tim Bird
  2015-09-07  7:56   ` Ivan T. Ivanov
  0 siblings, 1 reply; 3+ messages in thread
From: Tim Bird @ 2015-08-24 17:11 UTC (permalink / raw)
  To: Ivan T. Ivanov, Felipe Balbi
  Cc: Greg Kroah-Hartman, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-arm-msm

On 08/18/2015 12:56 AM, Ivan T. Ivanov wrote:
> Right now even if driver failed to probe extcon framework will
> still deliver its VBUS and ID events, which will lead to random
> exception codes.
> 
> Fix this by removing driver interest for VBUS and ID events when
> probe fail.
> 
> Fixes: 591fc116f330 ("usb: phy: msm: Use extcon framework for VBUS and ID detection")
> 
> Reported-by: Tim Bird <tim.bird@sonymobile.com>
> Signed-off-by: Ivan T. Ivanov <ivan.ivanov@linaro.org>
> ---
>  drivers/usb/phy/phy-msm-usb.c | 26 +++++++++++++++++---------
>  1 file changed, 17 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
> index 00c49bb1bd29..a9082567f114 100644
> --- a/drivers/usb/phy/phy-msm-usb.c
> +++ b/drivers/usb/phy/phy-msm-usb.c
> @@ -1581,6 +1581,8 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
>  		ret = extcon_register_interest(&motg->id.conn, ext_id->name,
>  					       "USB-HOST", &motg->id.nb);
>  		if (ret < 0) {
> +			if (!IS_ERR(ext_vbus))
> +				extcon_unregister_interest(&motg->vbus.conn);
>  			dev_err(&pdev->dev, "register ID notifier failed\n");
>  			return ret;
>  		}
...

This patch is obsoleted by commit 83b7b67c7, which changes the extcon API
a bit (from register_interest to register_notifier, among other things).

But, in general, I would expect this approach to work.

Do you want me to re-spin this with the new API?
 -- Tim

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

* Re: [PATCH] usb: phy: msm: Unregister driver interest for VBUS and ID events
  2015-08-24 17:11 ` Tim Bird
@ 2015-09-07  7:56   ` Ivan T. Ivanov
  0 siblings, 0 replies; 3+ messages in thread
From: Ivan T. Ivanov @ 2015-09-07  7:56 UTC (permalink / raw)
  To: Tim Bird
  Cc: Felipe Balbi, Greg Kroah-Hartman, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-arm-msm


On Mon, 2015-08-24 at 10:11 -0700, Tim Bird wrote:
> On 08/18/2015 12:56 AM, Ivan T. Ivanov wrote:
> > Right now even if driver failed to probe extcon framework will
> > still deliver its VBUS and ID events, which will lead to random
> > exception codes.
> > 
> > Fix this by removing driver interest for VBUS and ID events when
> > probe fail.
> > 
> > Fixes: 591fc116f330 ("usb: phy: msm: Use extcon framework for VBUS and ID detection")
> > 
> > Reported-by: Tim Bird bird@sonymobile.com>
> > Signed-off-by: Ivan T. Ivanov ivanov@linaro.org>
> > ---
> >  drivers/usb/phy/phy-msm-usb.c | 26 +++++++++++++++++---------
> >  1 file changed, 17 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
> > index 00c49bb1bd29..a9082567f114 100644
> > --- a/drivers/usb/phy/phy-msm-usb.c
> > +++ b/drivers/usb/phy/phy-msm-usb.c
> > @@ -1581,6 +1581,8 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
> >                 ret = extcon_register_interest(&motg->id.conn, ext_id->name,
> >                                                                                                 "USB-HOST", &motg->id.nb);
> >                 if (ret < 0) {
> > +                       if (!IS_ERR(ext_vbus))
> > +                               extcon_unregister_interest(&motg->vbus.conn);
> >                         dev_err(&pdev->dev, "register ID notifier failed\n");
> >                         return ret;
> >                 }
> ...
> 
> This patch is obsoleted by commit 83b7b67c7, which changes the extcon API
> a bit (from register_interest to register_notifier, among other things).

Ah, sorry, missed this. New version is coming.

Regards,
Ivan

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

end of thread, other threads:[~2015-09-07  7:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-18  7:56 [PATCH] usb: phy: msm: Unregister driver interest for VBUS and ID events Ivan T. Ivanov
2015-08-24 17:11 ` Tim Bird
2015-09-07  7:56   ` Ivan T. Ivanov

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).