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

Commit 541e0c61 authored by Vijayavardhan Vennapusa's avatar Vijayavardhan Vennapusa Committed by Ajay Agarwal
Browse files

usb: phy: qusb2: Enable phy auto-resume



phy auto-resume allows phy to automatically drive bus resume right
after device driving bus resume for at least 1ms due to remote wake up,
before host XHCI driver gets a chance to drive bus resume.

Change-Id: Ifbd2d8212fe5ed1bdad32418300ac615091f0226
Signed-off-by: default avatarVijayavardhan Vennapusa <vvreddy@codeaurora.org>
parent 12680d3d
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 * Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -63,6 +63,8 @@
#define FREEZIO_N			BIT(1)
#define POWER_DOWN			BIT(0)

#define QUSB2PHY_PORT_TEST_CTRL		0xB8

#define QUSB2PHY_PORT_UTMI_CTRL1	0xC0
#define SUSPEND_N			BIT(5)
#define TERM_SELECT			BIT(4)
@@ -988,6 +990,21 @@ static int qusb_phy_set_suspend(struct usb_phy *phy, int suspend)
			writel_relaxed(intr_mask,
				qphy->base + QUSB2PHY_PORT_INTR_CTRL);

			/* enable phy auto-resume */
			writel_relaxed(0x0C,
					qphy->base + QUSB2PHY_PORT_TEST_CTRL);
			/* flush the previous write before next write */
			wmb();
			writel_relaxed(0x04,
				qphy->base + QUSB2PHY_PORT_TEST_CTRL);


			dev_dbg(phy->dev, "%s: intr_mask = %x\n",
				__func__, intr_mask);

			/* Makes sure that above write goes through */
			wmb();

			qusb_phy_enable_clocks(qphy, false);
		} else { /* Disconnect case */
			/* Disable all interrupts */