diff mbox

phy: omap-usb2: Enable runtime PM of omap-usb2 phy properly

Message ID 1415081826-9297-1-git-send-email-kishon@ti.com
State New
Headers show

Commit Message

Kishon Vijay Abraham I Nov. 4, 2014, 6:17 a.m. UTC
From: Oussama Ghorbel <ghorbel@pivasoftware.com>

The USB OTG port does not work since v3.16 on omap platform.
This is a regression introduced by the commit
eb82a3d846fa (phy: omap-usb2: Balance pm_runtime_enable() on probe failure
 and remove).
This because the call to pm_runtime_enable() function is moved after the
call to devm_phy_create() function, which has side effect since later in
the subsequent calls of devm_phy_create() there is a check with
pm_runtime_enabled() to configure few things.

Signed-off-by: Oussama Ghorbel <ghorbel@pivasoftware.com>
Tested-by: Rabin Vincent <rabin@rab.in>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
 drivers/phy/phy-omap-usb2.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Sebastian Reichel Nov. 5, 2014, 5:54 p.m. UTC | #1
Hi,

On Tue, Nov 04, 2014 at 11:47:06AM +0530, Kishon Vijay Abraham I wrote:
> From: Oussama Ghorbel <ghorbel@pivasoftware.com>
> 
> The USB OTG port does not work since v3.16 on omap platform.
> This is a regression introduced by the commit
> eb82a3d846fa (phy: omap-usb2: Balance pm_runtime_enable() on probe failure
>  and remove).
> This because the call to pm_runtime_enable() function is moved after the
> call to devm_phy_create() function, which has side effect since later in
> the subsequent calls of devm_phy_create() there is a check with
> pm_runtime_enabled() to configure few things.
> 
> Signed-off-by: Oussama Ghorbel <ghorbel@pivasoftware.com>
> Tested-by: Rabin Vincent <rabin@rab.in>
> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>

stable annotations are missing. See

Documentation/stable_kernel_rules.txt

-- Sebastian
Greg Kroah-Hartman Nov. 5, 2014, 10:29 p.m. UTC | #2
On Wed, Nov 05, 2014 at 06:54:23PM +0100, Sebastian Reichel wrote:
> Hi,
> 
> On Tue, Nov 04, 2014 at 11:47:06AM +0530, Kishon Vijay Abraham I wrote:
> > From: Oussama Ghorbel <ghorbel@pivasoftware.com>
> > 
> > The USB OTG port does not work since v3.16 on omap platform.
> > This is a regression introduced by the commit
> > eb82a3d846fa (phy: omap-usb2: Balance pm_runtime_enable() on probe failure
> >  and remove).
> > This because the call to pm_runtime_enable() function is moved after the
> > call to devm_phy_create() function, which has side effect since later in
> > the subsequent calls of devm_phy_create() there is a check with
> > pm_runtime_enabled() to configure few things.
> > 
> > Signed-off-by: Oussama Ghorbel <ghorbel@pivasoftware.com>
> > Tested-by: Rabin Vincent <rabin@rab.in>
> > Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
> 
> stable annotations are missing. See
> 
> Documentation/stable_kernel_rules.txt

I can take care of that, thanks.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
diff mbox

Patch

diff --git a/drivers/phy/phy-omap-usb2.c b/drivers/phy/phy-omap-usb2.c
index 8c84298..f091576 100644
--- a/drivers/phy/phy-omap-usb2.c
+++ b/drivers/phy/phy-omap-usb2.c
@@ -258,14 +258,16 @@  static int omap_usb2_probe(struct platform_device *pdev)
 	otg->phy		= &phy->phy;
 
 	platform_set_drvdata(pdev, phy);
+	pm_runtime_enable(phy->dev);
 
 	generic_phy = devm_phy_create(phy->dev, NULL, &ops, NULL);
-	if (IS_ERR(generic_phy))
+	if (IS_ERR(generic_phy)) {
+		pm_runtime_disable(phy->dev);
 		return PTR_ERR(generic_phy);
+	}
 
 	phy_set_drvdata(generic_phy, phy);
 
-	pm_runtime_enable(phy->dev);
 	phy_provider = devm_of_phy_provider_register(phy->dev,
 			of_phy_simple_xlate);
 	if (IS_ERR(phy_provider)) {