From patchwork Mon Nov 20 17:06:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Th=C3=A9o_Lebrun?= X-Patchwork-Id: 13461615 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2A3C6C2BB3F for ; Mon, 20 Nov 2023 17:07:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=t2LM0wuWwGy3LngbHxf8NOURmoxP+CYCtQfDWp9c+e4=; b=UGRidbsDS1WxfB 6zAMlctdMvGxf3CYliYvF7Fb45xEetlW+SBnZCp4F2VknaIn1pwTG5orexc7SAlnmpLISywUrMyoK 6b5txKGugid2aVqXiKVJ2Maj7dPe7H00HqTIM1HzP+9jctaWCW/QyYc5lLeMZUn3uO949ryPW/i/l MtQG4cfTPHPEMnu5lEjPHNkNFv6OVIxB1kXygnGLQH9xctYfY4Z1sFKg/B42Mh2U/7KGWD4/Bqf7t 6tH0iuu+F2kR9hNpfdBQfhILpV/+SmdH25G5lA8zmLzBnXmNHEODAqViNvcjU4J6fsJh+IHL8mziv dtAUPx1CZqHgfmdIezuA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r57jA-00DaPg-00; Mon, 20 Nov 2023 17:06:28 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r57iv-00Da8r-0p for linux-arm-kernel@lists.infradead.org; Mon, 20 Nov 2023 17:06:17 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id C04F9E0004; Mon, 20 Nov 2023 17:06:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700499968; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4e4jB34Kjsk2UhhZjV+mvo2m7UoKK5NW1KZZ6R6IxOQ=; b=cqDuf8RNFW1EIuNkivfh/7YHzcXWzE3RlLaDdCkEnyQgoOrbKlktlJzBPBcsgnzQZPwHTF qz4DTkmFhScyDDAHK9IMH8OKsOpHbWoKWa6zXy+jgSfFx/KlqsZ/ZuOsQZrtH+VOVbz6Yj lIo3gidp5cPwrxrR2Ng5s2CO4lWcoayR00h9GDgZTSrlHGwsZPeQdzXuVVDhCJ6Xrc2AQa zGclxzuN3hL7ZzQ61Y4rBO6C7SNfR9C1pDm/8KG+A5JPARYyP3+gwUiC4SZpW9n5H0MZw4 sYRMW8mXzFYCQRAtifg6QcCYIaokeK5diiZbtPqVXQtKhqySHRPaLjsRit7OWw== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Mon, 20 Nov 2023 18:06:01 +0100 Subject: [PATCH v2 1/7] dt-bindings: usb: ti,j721e-usb: add ti,j7200-usb compatible MIME-Version: 1.0 Message-Id: <20231120-j7200-usb-suspend-v2-1-038c7e4a3df4@bootlin.com> References: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> In-Reply-To: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Roger Quadros , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "Thomas Petazzoni thomas.petazzoni"@bootlin.com, =?utf-8?q?Gr=C3=A9gory_Cl?= =?utf-8?q?ement?= , =?utf-8?q?Th=C3=A9o_Lebrun?= , Conor Dooley X-Mailer: b4 0.12.3 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231120_090613_467561_5F5AB863 X-CRM114-Status: UNSURE ( 9.33 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On this platform, the controller & its wrapper are reset on resume. This makes it have a different behavior from other platforms. We allow using the new compatible with a fallback onto the original ti,j721e-usb compatible. We therefore allow using an older kernel with a more recent devicetree. Acked-by: Conor Dooley Signed-off-by: Théo Lebrun --- Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml b/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml index 95ff9791baea..69a222dfd9ff 100644 --- a/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml +++ b/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml @@ -12,11 +12,15 @@ maintainers: properties: compatible: oneOf: + - const: ti,j7200-usb - const: ti,j721e-usb - const: ti,am64-usb - items: - const: ti,j721e-usb - const: ti,am64-usb + - items: + - const: ti,j721e-usb + - const: ti,j7200-usb reg: maxItems: 1 From patchwork Mon Nov 20 17:06:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Th=C3=A9o_Lebrun?= X-Patchwork-Id: 13461609 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EA268C2BB3F for ; Mon, 20 Nov 2023 17:06:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=dmNji9wcfIOz9U7Uwu96lQwHoju+WwsEbhA8jCdRVAo=; b=PZ7NIN/LXE5BDC lUzxE/vgFCy3LXHEiT08lNg0lZCvkrrrv1E6dmq1VkqAIQNhXynpbHUn2IJsmIXL3pu+j/n+MBtRY +ovjADM5hTbGqnh0T5TSHOlhM32NGvda0Q0MpUijvJnxj7KMcxPL3YD3h/SVmfVezUePnJWCxvtp+ IgBNEMwd3ylHWAzx711LxdMS+UAfcvSUtB4Xpp8pJ1T+EJXopvqnVCVpdYC9yT1bPyJIfHqjgNYPl b1E0KPrmzDPs6xgeaQtwfTLV6cyW5wdW3YjVbRh4FhI70EoatSHXZAGueWLUIwlrvz2f+nbvnvg43 vn85sxBPBkQ6XipytiGg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r57j0-00DaHQ-23; Mon, 20 Nov 2023 17:06:18 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r57iu-00Da9F-2k for linux-arm-kernel@lists.infradead.org; Mon, 20 Nov 2023 17:06:15 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 84998E0005; Mon, 20 Nov 2023 17:06:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700499969; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fQQDcKI+dpqgp9ry2CvzyMUklTw/BkteRs5/KYF01kQ=; b=bqXXNWdpzIkufw4/eBc9jm55Uw3x8QkodfspyE1V7Jt+eTNF+aB5jVNMr63m7CJKLPL9V/ 25zj0k/IZmeIlj2rNI9vNOSsHQ1zIsBpG9jm8NDXSlWdiao3FRmKMgZsojofjej2IsLGQn 4eUhchBUDXdeiYU1BlCqjjwjm3ruF33e6vUAI1nI5MXjt4EX83GhArHCoA4z3MQ0VlRUBY 7kjlZPtdgMbG7ja9akO+ifJXVaAAzpSF9+3bRs/HDtUD3hXeITuXdenKFW4ESOuknxNc8r quOGntw4hqr2MDIbSBQKIhDfbNaVrP6+saU9tTuCjXizS1knc8rGLiNcuN/k6A== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Mon, 20 Nov 2023 18:06:02 +0100 Subject: [PATCH v2 2/7] usb: cdns3-ti: remove runtime PM MIME-Version: 1.0 Message-Id: <20231120-j7200-usb-suspend-v2-2-038c7e4a3df4@bootlin.com> References: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> In-Reply-To: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Roger Quadros , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "Thomas Petazzoni thomas.petazzoni"@bootlin.com, =?utf-8?q?Gr=C3=A9gory_Cl?= =?utf-8?q?ement?= , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.12.3 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231120_090613_219253_17EB494D X-CRM114-Status: GOOD ( 13.13 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The driver does not use RPM. It enables it & gets a reference at probe. It then undoes that on probe error or at remove. Signed-off-by: Théo Lebrun --- drivers/usb/cdns3/cdns3-ti.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/drivers/usb/cdns3/cdns3-ti.c b/drivers/usb/cdns3/cdns3-ti.c index 5945c4b1e11f..dc1594acdcee 100644 --- a/drivers/usb/cdns3/cdns3-ti.c +++ b/drivers/usb/cdns3/cdns3-ti.c @@ -135,13 +135,6 @@ static int cdns_ti_probe(struct platform_device *pdev) rate_code = i; - pm_runtime_enable(dev); - error = pm_runtime_get_sync(dev); - if (error < 0) { - dev_err(dev, "pm_runtime_get_sync failed: %d\n", error); - goto err; - } - /* assert RESET */ reg = cdns_ti_readl(data, USBSS_W1); reg &= ~USBSS_W1_PWRUP_RST; @@ -179,16 +172,10 @@ static int cdns_ti_probe(struct platform_device *pdev) error = of_platform_populate(node, NULL, NULL, dev); if (error) { dev_err(dev, "failed to create children: %d\n", error); - goto err; + return error; } return 0; - -err: - pm_runtime_put_sync(data->dev); - pm_runtime_disable(data->dev); - - return error; } static int cdns_ti_remove_core(struct device *dev, void *c) @@ -205,8 +192,6 @@ static void cdns_ti_remove(struct platform_device *pdev) struct device *dev = &pdev->dev; device_for_each_child(dev, NULL, cdns_ti_remove_core); - pm_runtime_put_sync(dev); - pm_runtime_disable(dev); platform_set_drvdata(pdev, NULL); } From patchwork Mon Nov 20 17:06:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Th=C3=A9o_Lebrun?= X-Patchwork-Id: 13461614 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A1D94C197A0 for ; Mon, 20 Nov 2023 17:07:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=oPAaPofTnP3eb7oTtf3xlG2n6UO+e3q4cGcI3eOPbes=; b=B3w9KzsBiq4uP4 EX1NdbvNwP/T2cTtKRVeqQhfA102rm+d/trlMBv46JqqWbouPg5llWXvsTdfqwjzdOoC/vGv6Wu+H EN/WenJj49haN7glWQZYoycFPQQ9JDvhzqGrweWXygQRRzqjDJvU5+FdSWba67KXPwozlEHQF0ifo 1pWrT6h1aGFx61kaJ5PPslhpjBDNnLyfHqzOWx/LqxndTRaZ6F9EtFw6BZYRasTj8Lc2P2Ou4BFvI GPMHT1+jsDuQ2r1ft4vHIpfJYwy7+6PBf47o6XDNJEf+PdmD7NnezojuixHeYiHfCXiYkhIJJTRsZ qaiy/Feybk3G2o4kanIA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r57jB-00DaRE-2M; Mon, 20 Nov 2023 17:06:29 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r57iu-00Da9d-33 for linux-arm-kernel@lists.infradead.org; Mon, 20 Nov 2023 17:06:17 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 3D902E000D; Mon, 20 Nov 2023 17:06:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700499969; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QyeoyIjKWYnhadNlwnWChE/GqVDzf3ZKBilwOQ+lGlM=; b=ZqmdI66z1vy8lWgmGU5/XHNerVlOhh8vrY35rXCsocJuovHqlABoeZpMuq+A1lizcvborJ 7rmOClkHFBTsjATqeTxyNG/BxA6y/J8DKS2HpJ4qGrlqLEtKXdD/RxZAhao/6aJBqWaTkU lLaqax7sJc507icl7mqUJ7Lgs7VhvIByEU2E9AjIRWRZMbRiPqAcZv75C6UVfBNJwGX6qo kETyAFJp1QO5QF/yY23b9RmMeu2v5N1rgPHdRUo7+IwnO1pi67rDHLTHjW00HqwukC5/Ru WE0upzToqBPx2Mp8unvEFMibO+vyyOmMbSGjztMIz2Er5RewGUQY4HanT1e+dw== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Mon, 20 Nov 2023 18:06:03 +0100 Subject: [PATCH v2 3/7] usb: cdns3-ti: move reg writes from probe into an init_hw helper MIME-Version: 1.0 Message-Id: <20231120-j7200-usb-suspend-v2-3-038c7e4a3df4@bootlin.com> References: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> In-Reply-To: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Roger Quadros , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "Thomas Petazzoni thomas.petazzoni"@bootlin.com, =?utf-8?q?Gr=C3=A9gory_Cl?= =?utf-8?q?ement?= , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.12.3 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231120_090613_325291_C4B6FD31 X-CRM114-Status: GOOD ( 15.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The hardware initialisation register write sequence is only used at probe. To support suspend/resume with a controller losing power, we must redo this sequence of writes. Extract the register write sequence to a new cdns_ti_init_hw function to reuse it later down the road, at resume. We keep the devicetree-parsing aspect of the sequence in probe & add a new field in the private struct to remember the USB2 refclk rate code computation result. Signed-off-by: Théo Lebrun --- drivers/usb/cdns3/cdns3-ti.c | 76 ++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/drivers/usb/cdns3/cdns3-ti.c b/drivers/usb/cdns3/cdns3-ti.c index dc1594acdcee..d4232b440e4e 100644 --- a/drivers/usb/cdns3/cdns3-ti.c +++ b/drivers/usb/cdns3/cdns3-ti.c @@ -57,6 +57,7 @@ struct cdns_ti { unsigned vbus_divider:1; struct clk *usb2_refclk; struct clk *lpm_clk; + int usb2_refclk_rate_code; }; static const int cdns_ti_rate_table[] = { /* in KHZ */ @@ -85,15 +86,50 @@ static inline void cdns_ti_writel(struct cdns_ti *data, u32 offset, u32 value) writel(value, data->usbss + offset); } +static void cdns_ti_init_hw(struct cdns_ti *data) +{ + u32 reg; + + /* assert RESET */ + reg = cdns_ti_readl(data, USBSS_W1); + reg &= ~USBSS_W1_PWRUP_RST; + cdns_ti_writel(data, USBSS_W1, reg); + + /* set static config */ + reg = cdns_ti_readl(data, USBSS_STATIC_CONFIG); + reg &= ~USBSS1_STATIC_PLL_REF_SEL_MASK; + reg |= data->usb2_refclk_rate_code << USBSS1_STATIC_PLL_REF_SEL_SHIFT; + + reg &= ~USBSS1_STATIC_VBUS_SEL_MASK; + if (data->vbus_divider) + reg |= 1 << USBSS1_STATIC_VBUS_SEL_SHIFT; + + cdns_ti_writel(data, USBSS_STATIC_CONFIG, reg); + reg = cdns_ti_readl(data, USBSS_STATIC_CONFIG); + + /* set USB2_ONLY mode if requested */ + reg = cdns_ti_readl(data, USBSS_W1); + if (data->usb2_only) + reg |= USBSS_W1_USB2_ONLY; + + /* set default modestrap */ + reg |= USBSS_W1_MODESTRAP_SEL; + reg &= ~USBSS_W1_MODESTRAP_MASK; + reg |= USBSS_MODESTRAP_MODE_NONE << USBSS_W1_MODESTRAP_SHIFT; + cdns_ti_writel(data, USBSS_W1, reg); + + /* de-assert RESET */ + reg |= USBSS_W1_PWRUP_RST; + cdns_ti_writel(data, USBSS_W1, reg); +} + static int cdns_ti_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct device_node *node = pdev->dev.of_node; struct cdns_ti *data; - int error; - u32 reg; - int rate_code, i; unsigned long rate; + int error, i; data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) @@ -133,41 +169,11 @@ static int cdns_ti_probe(struct platform_device *pdev) return -EINVAL; } - rate_code = i; - - /* assert RESET */ - reg = cdns_ti_readl(data, USBSS_W1); - reg &= ~USBSS_W1_PWRUP_RST; - cdns_ti_writel(data, USBSS_W1, reg); - - /* set static config */ - reg = cdns_ti_readl(data, USBSS_STATIC_CONFIG); - reg &= ~USBSS1_STATIC_PLL_REF_SEL_MASK; - reg |= rate_code << USBSS1_STATIC_PLL_REF_SEL_SHIFT; - - reg &= ~USBSS1_STATIC_VBUS_SEL_MASK; + data->usb2_refclk_rate_code = i; data->vbus_divider = device_property_read_bool(dev, "ti,vbus-divider"); - if (data->vbus_divider) - reg |= 1 << USBSS1_STATIC_VBUS_SEL_SHIFT; - - cdns_ti_writel(data, USBSS_STATIC_CONFIG, reg); - reg = cdns_ti_readl(data, USBSS_STATIC_CONFIG); - - /* set USB2_ONLY mode if requested */ - reg = cdns_ti_readl(data, USBSS_W1); data->usb2_only = device_property_read_bool(dev, "ti,usb2-only"); - if (data->usb2_only) - reg |= USBSS_W1_USB2_ONLY; - - /* set default modestrap */ - reg |= USBSS_W1_MODESTRAP_SEL; - reg &= ~USBSS_W1_MODESTRAP_MASK; - reg |= USBSS_MODESTRAP_MODE_NONE << USBSS_W1_MODESTRAP_SHIFT; - cdns_ti_writel(data, USBSS_W1, reg); - /* de-assert RESET */ - reg |= USBSS_W1_PWRUP_RST; - cdns_ti_writel(data, USBSS_W1, reg); + cdns_ti_init_hw(data); error = of_platform_populate(node, NULL, NULL, dev); if (error) { From patchwork Mon Nov 20 17:06:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Th=C3=A9o_Lebrun?= X-Patchwork-Id: 13461611 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 40794C2BB3F for ; Mon, 20 Nov 2023 17:06:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WksrASSxKTCiWqxPy6aKgJF/wxlgmMG+q0JCPl+uuYk=; b=QvA5BkpOJrBSez L4vwhWhZ5kx9bzxMdGujISNT+mJ+6eMvMis/MTIwMm/c9PKVavWDGYqG+nfwXYg4lJIn3xtPlagBg xjoNq0bJNLHHCuME11L6sqFffYLGqCdTJi3GEo2dt2rmXsxfqChvyKSoSoeVtuPO7hht8NZG3UjqK fzrgefr6NMj27iVEnHVeZWl4PunJqiBv3JXbvNQ9Zdw8VKwQLDq2VbS1nvi74OidS2du88WoJ3FpM trWnay4IelpkW1X3ek82fL4z3JJYgiZ4Ag+LOinQaZTHTy+OK4sC/+s5Mk+LLwpYeKwW3kHLivA9/ bm/6cHL9EkWtswrrcjJA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r57jA-00DaQU-3D; Mon, 20 Nov 2023 17:06:29 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r57iv-00DaA1-1Y for linux-arm-kernel@lists.infradead.org; Mon, 20 Nov 2023 17:06:17 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id F107DE0009; Mon, 20 Nov 2023 17:06:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700499970; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Wx2rOa/1wEHZbfuDfJmt7rGuUCDalwYHOdzLSZet/jw=; b=dL93nhq7nFnhEtJ3V4mIwOa6WoEfgxT7akOjFtbvuoyKjbdOcstvgX5pxBnhzz3GkK5VLk wHOaKzIqAg/izt16nhz15VAXHp5sb3mTgc1kLrR1k36BNWrCnj/iAtJkR4XloNHIWQazGx DuBgmmkpr/KXE3KTagG3GNOer/BxUdx5Sk6Bi51a+hlu+UOSVeji3sToe8xixLTY6ApxCN 3ZYzkwwcuRSHU4kZVzvcKHYkVvazsiteXcVkft6N8xuN+naKz+ONMW95HT3EUS+H0jIFm/ ETB5uql1rAzQjc4C5GjnvOjw0uFx2c73fcy/NKnh2KVLdENeuCttAqZ6rMUGKg== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Mon, 20 Nov 2023 18:06:04 +0100 Subject: [PATCH v2 4/7] usb: cdns3-ti: add suspend/resume procedures for J7200 MIME-Version: 1.0 Message-Id: <20231120-j7200-usb-suspend-v2-4-038c7e4a3df4@bootlin.com> References: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> In-Reply-To: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Roger Quadros , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "Thomas Petazzoni thomas.petazzoni"@bootlin.com, =?utf-8?q?Gr=C3=A9gory_Cl?= =?utf-8?q?ement?= , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.12.3 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231120_090613_814589_41B22F32 X-CRM114-Status: GOOD ( 17.04 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hardware initialisation is only done at probe. The J7200 USB controller is reset at resume because of power-domains toggling off & on. We therefore reconfigure the hardware at resume. Reuse the newly extracted cdns_ti_init_hw() function that contains the register write sequence. Only focus J7200 as other SoC are untested. If the controller does not reset we do not want to redo reg writes. Signed-off-by: Théo Lebrun --- drivers/usb/cdns3/cdns3-ti.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/usb/cdns3/cdns3-ti.c b/drivers/usb/cdns3/cdns3-ti.c index d4232b440e4e..84f93c2fcd5c 100644 --- a/drivers/usb/cdns3/cdns3-ti.c +++ b/drivers/usb/cdns3/cdns3-ti.c @@ -58,6 +58,7 @@ struct cdns_ti { struct clk *usb2_refclk; struct clk *lpm_clk; int usb2_refclk_rate_code; + bool reset_on_resume; }; static const int cdns_ti_rate_table[] = { /* in KHZ */ @@ -172,6 +173,7 @@ static int cdns_ti_probe(struct platform_device *pdev) data->usb2_refclk_rate_code = i; data->vbus_divider = device_property_read_bool(dev, "ti,vbus-divider"); data->usb2_only = device_property_read_bool(dev, "ti,usb2-only"); + data->reset_on_resume = of_device_is_compatible(node, "ti,j7200-usb"); cdns_ti_init_hw(data); @@ -202,7 +204,26 @@ static void cdns_ti_remove(struct platform_device *pdev) platform_set_drvdata(pdev, NULL); } +#ifdef CONFIG_PM + +static int cdns_ti_resume(struct device *dev) +{ + struct cdns_ti *data = dev_get_drvdata(dev); + + if (data->reset_on_resume) + cdns_ti_init_hw(data); + + return 0; +} + +static const struct dev_pm_ops cdns_ti_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(NULL, cdns_ti_resume) +}; + +#endif /* CONFIG_PM */ + static const struct of_device_id cdns_ti_of_match[] = { + { .compatible = "ti,j7200-usb", }, { .compatible = "ti,j721e-usb", }, { .compatible = "ti,am64-usb", }, {}, @@ -213,8 +234,9 @@ static struct platform_driver cdns_ti_driver = { .probe = cdns_ti_probe, .remove_new = cdns_ti_remove, .driver = { - .name = "cdns3-ti", + .name = "cdns3-ti", .of_match_table = cdns_ti_of_match, + .pm = pm_ptr(&cdns_ti_pm_ops), }, }; From patchwork Mon Nov 20 17:06:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Th=C3=A9o_Lebrun?= X-Patchwork-Id: 13461612 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 61CC9C2BB3F for ; Mon, 20 Nov 2023 17:06:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2XWldCH14qCh71hccwlpzgMo1VPig1mga/PyEFafmU0=; b=KZAsrQ7Ssr3Pr0 siF2pMRrt6mZ8Ham43YRXz0ZNXKcqi7eh1VhNRvygmS+QWi5bRpYOYVISklrdlYj1eAEXtNMvuj2j R00Nz2XhxmA1G8X+Ku882mz+RdeuUDNR3t7Snbozs4Ymy8fDm2LtRVxaoYrVyFLMt0/yV+fLrajAH kL3c3FonjQ4McC2eaJHncLQ58QOo4VxnWYGjEbA5oHixjfT7ImbZIs/gyWL/XFyiSvoDXVI5Mi3Qu xpH+dR1BKkogfCWlpJXyhRtf2KfsP3v3aFW3iUHjeAwUuVMjlqphAby9utTj2Czc8CDJVVzLr9L3J ivvshmkaPr0Sjsj4bxBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r57jC-00DaS0-1p; Mon, 20 Nov 2023 17:06:30 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r57iw-00DaAO-0T for linux-arm-kernel@lists.infradead.org; Mon, 20 Nov 2023 17:06:17 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id A5666E000F; Mon, 20 Nov 2023 17:06:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700499971; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0N+JeDCct2n4pgXnrJDil9hLa2D4hq87laHaGCbNG30=; b=elgohwiwWAZjxzqdb9A7uBO0ZwHANO1eYP4fdo/kWWYKEUkfmfWsVYsvVXRm1okOGrovnI z5ol2gOy7Bb5WApNszNoJLqthfBDIiDrPdxSUlipiqJqaJRQVPrYOTlP96oi5VYddLJc8E II3HhYNB1jq39Gnv6Qxh1Y8RP0ftX28Bdvfwbj8R2Jd2aN+aMLldFHwwXB5mzpIY08Kzj5 5U0jSMEsTHfEfCDvbrD+qY3TjtzCOVMRW/VcBo/6SY8XjGxHFWFteOlkrIpOlerf0CJzLF btqfyQGYF/sH44FpSXLniiTdnVcENmVeaV8jSwnnH7A1sdmtGmr64cqHHAUYXg== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Mon, 20 Nov 2023 18:06:05 +0100 Subject: [PATCH v2 5/7] usb: cdns3: add quirk to platform data for reset-on-resume MIME-Version: 1.0 Message-Id: <20231120-j7200-usb-suspend-v2-5-038c7e4a3df4@bootlin.com> References: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> In-Reply-To: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Roger Quadros , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "Thomas Petazzoni thomas.petazzoni"@bootlin.com, =?utf-8?q?Gr=C3=A9gory_Cl?= =?utf-8?q?ement?= , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.12.3 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231120_090614_401067_A0E7046A X-CRM114-Status: GOOD ( 11.24 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The cdns3 host role does not care about reset-on-resume. xHCI however reconfigures itself in silence rather than printing a warning about a resume error. Related warning example: [ 16.017462] xhci-hcd xhci-hcd.1.auto: xHC error in resume, USBSTS 0x401, Reinit Allow passing a CDNS3_RESET_ON_RESUME quirk flag from cdns3 pdata down to xHCI pdata. The goal is to allow signaling about reset-on-resume behavior from platform wrapper drivers. When used, remote wakeup is not expected to work. Signed-off-by: Théo Lebrun Acked-by: Peter Chen --- drivers/usb/cdns3/core.h | 1 + drivers/usb/cdns3/host.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/drivers/usb/cdns3/core.h b/drivers/usb/cdns3/core.h index 81a9c9d6be08..7487067ba23f 100644 --- a/drivers/usb/cdns3/core.h +++ b/drivers/usb/cdns3/core.h @@ -44,6 +44,7 @@ struct cdns3_platform_data { bool suspend, bool wakeup); unsigned long quirks; #define CDNS3_DEFAULT_PM_RUNTIME_ALLOW BIT(0) +#define CDNS3_RESET_ON_RESUME BIT(1) }; /** diff --git a/drivers/usb/cdns3/host.c b/drivers/usb/cdns3/host.c index 6164fc4c96a4..28c4d1deb231 100644 --- a/drivers/usb/cdns3/host.c +++ b/drivers/usb/cdns3/host.c @@ -91,6 +91,9 @@ static int __cdns_host_init(struct cdns *cdns) if (cdns->pdata && (cdns->pdata->quirks & CDNS3_DEFAULT_PM_RUNTIME_ALLOW)) cdns->xhci_plat_data->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW; + if (cdns->pdata && (cdns->pdata->quirks & CDNS3_RESET_ON_RESUME)) + cdns->xhci_plat_data->quirks |= XHCI_RESET_ON_RESUME; + ret = platform_device_add_data(xhci, cdns->xhci_plat_data, sizeof(struct xhci_plat_priv)); if (ret) From patchwork Mon Nov 20 17:06:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Th=C3=A9o_Lebrun?= X-Patchwork-Id: 13461613 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 08910C5AD4C for ; Mon, 20 Nov 2023 17:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jIkrnAOoSTboM8tqxfYnbnc51Fep0nRfu89HmzyBKn4=; b=WRej6oYA6M+NyQ 4BpYSyMLVKCRheB09k174a+cl5VBAIhuQobAUXNnEnNodkt4czE3f92tlUJkKy7kCs+zHm6RoWfy8 zsqTeiROK/kWwpLFhFOy1f59noLJAABuPyHkSfij2pSAISqexYTMngKnj6IZduZWCvuxrU9JbUz7G cO4cAWEB3AyQ13bu8x66UxVlbd3DmKoKv6RozX27AnIdPAWOMnFcToaovVVrII2kSNAkwChQpHG0j zuDtDUpzBn5cwodHLOcKTZ4I4gaFIBx3pTEvQhhYpqGdcHI4IT3g3dQjx39+KYOmAI/RgKO2Cg/N6 emrxSIRmkRcrIYOyFPBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r57jD-00DaTJ-2e; Mon, 20 Nov 2023 17:06:31 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r57iv-00DaAo-1y for linux-arm-kernel@lists.infradead.org; Mon, 20 Nov 2023 17:06:17 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 62A2FE0010; Mon, 20 Nov 2023 17:06:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700499972; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nDo2L/kHH9S9njIE6FRuQXRwkc6RX5NfCLZkNNd2W9E=; b=QBqPbnsxX5rPc90WJBdLJNqmikqCqCW9lLULcko2NpiWhto/Vzx2pBz1B1AyHUAckANfOn NOWwyh1lTnaIn3E0HmBzw5lgnGbvDErrP5rlqISW7AtaDHhy95aNawkIA+uDfh4dnVRIRH YSLa5MXVUPQ41b7VwNYsC+fwgi30ZjmCC4Ue+pCLNQdzsVGwUDg1AToa0QzAE3uIsyu6TJ sQ5Okl4vkxi7vl06ZP13kvGpe4rfCBTUFYCjYLOcgZYyh7QyF8+lwewZXi/c49xIfLfIJp 95vGcaCza1+nxKTvoiTUeZwjmxI19pSBXHfqH9c2Dyikj/koqNOy1PYXAQuQCA== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Mon, 20 Nov 2023 18:06:06 +0100 Subject: [PATCH v2 6/7] usb: cdns3-ti: signal reset-on-resume to xHCI for J7200 platform MIME-Version: 1.0 Message-Id: <20231120-j7200-usb-suspend-v2-6-038c7e4a3df4@bootlin.com> References: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> In-Reply-To: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Roger Quadros , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "Thomas Petazzoni thomas.petazzoni"@bootlin.com, =?utf-8?q?Gr=C3=A9gory_Cl?= =?utf-8?q?ement?= , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.12.3 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231120_090613_973757_89532BEA X-CRM114-Status: GOOD ( 15.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Pass CDNS3_RESET_ON_RESUME as platform data to cdns3 host role. It will in turn pass it down to xHCI platform data as XHCI_RESET_ON_RESUME. Avoid this warning on resume: [ 16.017462] xhci-hcd xhci-hcd.1.auto: xHC error in resume, USBSTS 0x401, Reinit When used, remote wakeup is not expected to work. Only focus J7200 as other SoC are untested. Signed-off-by: Théo Lebrun Signed-off-by: Théo Lebrun Signed-off-by: Théo Lebrun --- drivers/usb/cdns3/cdns3-ti.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/usb/cdns3/cdns3-ti.c b/drivers/usb/cdns3/cdns3-ti.c index 84f93c2fcd5c..7d56a1acbc54 100644 --- a/drivers/usb/cdns3/cdns3-ti.c +++ b/drivers/usb/cdns3/cdns3-ti.c @@ -16,6 +16,7 @@ #include #include #include +#include "core.h" /* USB Wrapper register offsets */ #define USBSS_PID 0x0 @@ -128,6 +129,7 @@ static int cdns_ti_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct device_node *node = pdev->dev.of_node; + const struct of_dev_auxdata *auxdata; struct cdns_ti *data; unsigned long rate; int error, i; @@ -177,7 +179,8 @@ static int cdns_ti_probe(struct platform_device *pdev) cdns_ti_init_hw(data); - error = of_platform_populate(node, NULL, NULL, dev); + auxdata = of_device_get_match_data(dev); + error = of_platform_populate(node, NULL, auxdata, dev); if (error) { dev_err(dev, "failed to create children: %d\n", error); return error; @@ -222,8 +225,20 @@ static const struct dev_pm_ops cdns_ti_pm_ops = { #endif /* CONFIG_PM */ +static struct cdns3_platform_data cdns_ti_j7200_pdata = { + .quirks = CDNS3_RESET_ON_RESUME, +}; + +static const struct of_dev_auxdata cdns_ti_j7200_auxdata[] = { + { + .compatible = "cdns,usb3", + .platform_data = &cdns_ti_j7200_pdata, + }, + {}, +}; + static const struct of_device_id cdns_ti_of_match[] = { - { .compatible = "ti,j7200-usb", }, + { .compatible = "ti,j7200-usb", .data = cdns_ti_j7200_auxdata, }, { .compatible = "ti,j721e-usb", }, { .compatible = "ti,am64-usb", }, {}, From patchwork Mon Nov 20 17:06:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Th=C3=A9o_Lebrun?= X-Patchwork-Id: 13461616 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 42830C2BB3F for ; Mon, 20 Nov 2023 17:07:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=o51Banfqfo70VeDfq6Gnm+01rdycsxJzYXleW2pQHwk=; b=YJkuNebucOM7PY VN/LOtxP4QNW+5f4MNV6C550EEVbsF/1bAW3TLuyr6q+zpvrDLrZOjkkDcFkVcSPK5eESby02kFEG WHh2K0IcSXLKOaL86dO8/PPc8hifn/Kog/uVrKzGcZAcEiEgLTqDp8UWegkHXT1IG3FRKiK6z/caQ 7FGettuc11bee849bBJv2WB44Hv11ZndpyiEULc4Y7nRhEcodfDQM2o1g/lqACNlF3GRfNKg1uY9Y bWw4CC+dE/PGZn62yY7eygvaAmba0Qlgl2dkCSvdbkVrfzkC7suApWI4rA0xm/pqAg2sZ64xzoiu0 xvnrZOkMRhJ634ycgOqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r57jX-00Dams-2a; Mon, 20 Nov 2023 17:06:51 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r57iw-00DaBF-0v for linux-arm-kernel@lists.infradead.org; Mon, 20 Nov 2023 17:06:18 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 34272E000B; Mon, 20 Nov 2023 17:06:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1700499972; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=psIdhG1r0J8G800d6Izk2n63b31U1ZZAZ9rXUyFBS5Q=; b=YSyItrHfbf+k8A4+8SzdiVoIgRTSJ9p7kJOCB82WPphGJs2ktpIZ9muRi7YGvMKk/5vBFk cd1VSLoR04Brb/ycw4nBEnHaLH0eEjz50Y1/HTU8EOn/2ft/JelSmEZ4wkrTXprO25PVm3 /2SAU2ms060NioPTmpfGRnBgGQl1IDmAo/16epU7YcXywLS1o8IVTMYJbJCakl0RFTt5nx GTm4x0N4wd4SOKhp08d7PdVEg0sSHaNZbURoNnzs28vFVWneK/aCWjNllBNuDUTGLkOGoy 1t5NiUl5Cv+BhYm6iXIwQ4Uufu7w54KUxdxxRTV/CVgGMMYggEojlueU63zNvQ== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Mon, 20 Nov 2023 18:06:07 +0100 Subject: [PATCH v2 7/7] arm64: dts: ti: k3-j7200: use J7200-specific USB compatible MIME-Version: 1.0 Message-Id: <20231120-j7200-usb-suspend-v2-7-038c7e4a3df4@bootlin.com> References: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> In-Reply-To: <20231120-j7200-usb-suspend-v2-0-038c7e4a3df4@bootlin.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Roger Quadros , Peter Chen , Pawel Laszczak , Nishanth Menon , Vignesh Raghavendra , Tero Kristo Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, "Thomas Petazzoni thomas.petazzoni"@bootlin.com, =?utf-8?q?Gr=C3=A9gory_Cl?= =?utf-8?q?ement?= , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.12.3 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231120_090614_555288_5EFA8E1F X-CRM114-Status: GOOD ( 10.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On our platform, suspend-to-idle or suspend-to-RAM turn the controller off. This compatible triggers reset on resume behavior to reconfigure the hardware. Signed-off-by: Théo Lebrun --- arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi b/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi index 709081cd1e7f..52c4ee0fa334 100644 --- a/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi +++ b/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi @@ -788,7 +788,7 @@ pcie1_ep: pcie-ep@2910000 { }; usbss0: cdns-usb@4104000 { - compatible = "ti,j721e-usb"; + compatible = "ti,j7200-usb", "ti,j721e-usb"; reg = <0x00 0x4104000 0x00 0x100>; dma-coherent; power-domains = <&k3_pds 288 TI_SCI_PD_EXCLUSIVE>;