Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2860958pxv; Mon, 12 Jul 2021 03:49:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz4RkGv/P8L2ixH633B++wEMGiMeouNjxLvAnPxNiq1BYzRCst5gOSVjegA2GF3UPiHIwOh X-Received: by 2002:a92:8712:: with SMTP id m18mr21785574ild.132.1626086976592; Mon, 12 Jul 2021 03:49:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626086976; cv=none; d=google.com; s=arc-20160816; b=jo9dtVRfoSUMl1Y/dJUD8BryPMyK0Au7LECzLmWVIPlFP4DIjj/9we9V/pHV6QrLAA EpRyNgOcH7Sv6GalNviwHuuKr/5x/XTm0JvYkhm3T0aiYZe3ovXncFRy9ZEeZJFTj/5x rwrRtK+qwrt7k/pTPMeEcbG8aqdHjXpemvAakT6XOhchRTfAUOJp6oNB1RbXBt/+udDx 1n46knOmixevyvL1VuYl9qBhwBtqu2BPn0xbQQMdo5XE7PcPATJYW7BUaWddNZoG1wAB sjpDspFvNQ6RKUETH5pLCFvip5SHyxRgojlo3ufWOv1EWIv/8Z+GkeYKYEwuF10pqVwi 0kzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=dN4if6KFzgG1L8vgqN/yGhrRA509qcca+e4NQ9Bk2Qc=; b=FEDiG9u20LKq76fKzujWOuUypT2m2lEggKj7rxfV1yOjPWN2gpeYDTlvh0B4INfe+1 Ctoai04gJdz820q+Of+VVNNnSuijKM4sN53eJI/W/OPeUhM0oC/rUN9ezq9mqG2NFpkW COjNCkvaj2WXdNyyfgVpoabrxVv/mmVoI9pX3UhWIxzUOttyGyWAKdCIvO7oX0oIeHjH Sgr4lG4TCJxf9j+4drD99PZ+ntdML6VvQ9q0g0yFyFrUYiPusqTU85ChDdSCfg0GS3gH fr/UrFs9/HdHBz0V17PEBuC4hGAqZIFnYYJyyVm8ahow6jFgLQWrIdoWslTbL/1BL6WJ H0lA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="Ps/pkkLC"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w25si12584585iot.26.2021.07.12.03.49.24; Mon, 12 Jul 2021 03:49:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="Ps/pkkLC"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349590AbhGLIGj (ORCPT + 99 others); Mon, 12 Jul 2021 04:06:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:43708 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343645AbhGLH2l (ORCPT ); Mon, 12 Jul 2021 03:28:41 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id DBB04611AD; Mon, 12 Jul 2021 07:24:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626074657; bh=EYuVSNaOUkLThm0haDpdFQlpTFKIsTJ0fAoZnBlV6v4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ps/pkkLCiJQ5rGTferhPnmGd+0DzmvWpjZkh0HZ/H+zgtKGPN+bdVpd+zqA10q/Jb uy8MZzcNufwvIVCjOH3PPGTjtkVtHeQivkoDxkGN0/7hkH+BnTFWdu6XsCsU3xMywB ioWGT6SraviCwbIuCRZD7hLFFRfLpXiuTFtZYaho= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Peter Chen , Dmitry Osipenko , Sasha Levin , Maxim Schwalm Subject: [PATCH 5.12 626/700] usb: phy: tegra: Wait for VBUS wakeup status deassertion on suspend Date: Mon, 12 Jul 2021 08:11:49 +0200 Message-Id: <20210712061042.410996320@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060924.797321836@linuxfoundation.org> References: <20210712060924.797321836@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dmitry Osipenko [ Upstream commit 6f8d39a8ef55efde414b6e574384acbce70c3119 ] Some devices need an extra delay after losing VBUS, otherwise VBUS may be detected as active at suspend time, preventing the PHY's suspension by the VBUS detection sensor. This problem was found on Asus Transformer TF700T (Tegra30) tablet device, where the USB PHY wakes up immediately from suspend because VBUS sensor continues to detect VBUS as active after disconnection. We need to poll the PHY's VBUS wakeup status until it's deasserted before suspending PHY in order to fix this minor trouble. Fixes: 35192007d28d ("usb: phy: tegra: Support waking up from a low power mode") Reported-by: Maxim Schwalm # Asus TF700T Tested-by: Maxim Schwalm # Asus TF700T Reviewed-by: Peter Chen Signed-off-by: Dmitry Osipenko Link: https://lore.kernel.org/r/20210613145936.9902-1-digetx@gmail.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/phy/phy-tegra-usb.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/usb/phy/phy-tegra-usb.c b/drivers/usb/phy/phy-tegra-usb.c index a48452a6172b..10fafcf9801b 100644 --- a/drivers/usb/phy/phy-tegra-usb.c +++ b/drivers/usb/phy/phy-tegra-usb.c @@ -64,6 +64,7 @@ #define A_VBUS_VLD_WAKEUP_EN BIT(30) #define USB_PHY_VBUS_WAKEUP_ID 0x408 +#define VBUS_WAKEUP_STS BIT(10) #define VBUS_WAKEUP_WAKEUP_EN BIT(30) #define USB1_LEGACY_CTRL 0x410 @@ -642,6 +643,15 @@ static int utmi_phy_power_off(struct tegra_usb_phy *phy) void __iomem *base = phy->regs; u32 val; + /* + * Give hardware time to settle down after VBUS disconnection, + * otherwise PHY will immediately wake up from suspend. + */ + if (phy->wakeup_enabled && phy->mode != USB_DR_MODE_HOST) + readl_relaxed_poll_timeout(base + USB_PHY_VBUS_WAKEUP_ID, + val, !(val & VBUS_WAKEUP_STS), + 5000, 100000); + utmi_phy_clk_disable(phy); /* PHY won't resume if reset is asserted */ -- 2.30.2