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

Commit 62dc5769 authored by Tony Lindgren's avatar Tony Lindgren Committed by Kishon Vijay Abraham I
Browse files

usb: phy: twl4030-usb: Simplify phy init to use runtime PM



We can now let the interrupt and delayed work do all that's
needed with runtime PM.

Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
parent bb419402
Loading
Loading
Loading
Loading
+3 −17
Original line number Diff line number Diff line
@@ -471,16 +471,8 @@ static int twl4030_phy_power_on(struct phy *phy)
	twl4030_usb_set_mode(twl, twl->usb_mode);
	if (twl->usb_mode == T2_USB_MODE_ULPI)
		twl4030_i2c_access(twl, 0);
	schedule_delayed_work(&twl->id_workaround_work, 0);

	/*
	 * XXX When VBUS gets driven after musb goes to A mode,
	 * ID_PRES related interrupts no longer arrive, why?
	 * Register itself is updated fine though, so we must poll.
	 */
	if (twl->linkstat == OMAP_MUSB_ID_GROUND) {
		cancel_delayed_work(&twl->id_workaround_work);
		schedule_delayed_work(&twl->id_workaround_work, HZ);
	}
	return 0;
}

@@ -612,16 +604,9 @@ static void twl4030_id_workaround_work(struct work_struct *work)
static int twl4030_phy_init(struct phy *phy)
{
	struct twl4030_usb *twl = phy_get_drvdata(phy);
	enum omap_musb_vbus_id_status status;

	pm_runtime_get_sync(twl->dev);
	status = twl4030_usb_linkstat(twl);
	twl->linkstat = status;

	if (status == OMAP_MUSB_ID_GROUND || status == OMAP_MUSB_VBUS_VALID)
		omap_musb_mailbox(twl->linkstat);

	sysfs_notify(&twl->dev->kobj, NULL, "vbus");
	schedule_delayed_work(&twl->id_workaround_work, 0);
	pm_runtime_mark_last_busy(twl->dev);
	pm_runtime_put_autosuspend(twl->dev);

@@ -698,6 +683,7 @@ static int twl4030_usb_probe(struct platform_device *pdev)
	twl->dev		= &pdev->dev;
	twl->irq		= platform_get_irq(pdev, 0);
	twl->vbus_supplied	= false;
	twl->linkstat		= -EINVAL;
	twl->asleep		= 1;
	twl->linkstat		= OMAP_MUSB_UNKNOWN;