Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 817e5f33 authored by Kishon Vijay Abraham I's avatar Kishon Vijay Abraham I Committed by Felipe Balbi
Browse files

usb: phy: twl4030: fix cold plug on OMAP3



Having twl4030_usb_phy_init() (detects if a cable is connected before
twl4030 is probed) in twl4030 probe makes cable connect events to be
missed by musb glue, since it gets loaded after twl4030. Having
twl4030_usb_phy_init as a usb_phy ops lets twl4030_usb_phy_init to be
called when glue is ready.

Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
Tested-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 9166902c
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -510,8 +510,9 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
	return IRQ_HANDLED;
}

static void twl4030_usb_phy_init(struct twl4030_usb *twl)
static int twl4030_usb_phy_init(struct usb_phy *phy)
{
	struct twl4030_usb *twl = phy_to_twl(phy);
	enum omap_musb_vbus_id_status status;

	status = twl4030_usb_linkstat(twl);
@@ -528,6 +529,7 @@ static void twl4030_usb_phy_init(struct twl4030_usb *twl)
		omap_musb_mailbox(twl->linkstat);
	}
	sysfs_notify(&twl->dev->kobj, NULL, "vbus");
	return 0;
}

static int twl4030_set_suspend(struct usb_phy *x, int suspend)
@@ -604,6 +606,7 @@ static int twl4030_usb_probe(struct platform_device *pdev)
	twl->phy.otg		= otg;
	twl->phy.type		= USB_PHY_TYPE_USB2;
	twl->phy.set_suspend	= twl4030_set_suspend;
	twl->phy.init		= twl4030_usb_phy_init;

	otg->phy		= &twl->phy;
	otg->set_host		= twl4030_set_host;
@@ -641,11 +644,6 @@ static int twl4030_usb_probe(struct platform_device *pdev)
		return status;
	}

	/* Power down phy or make it work according to
	 * current link state.
	 */
	twl4030_usb_phy_init(twl);

	dev_info(&pdev->dev, "Initialized TWL4030 USB module\n");
	return 0;
}