From patchwork Thu Sep 16 16:02:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 513047 Delivered-To: patch@linaro.org Received: by 2002:a02:c816:0:0:0:0:0 with SMTP id p22csp1445043jao; Thu, 16 Sep 2021 10:44:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzROiCublE9WAWwa08G3pXxCbU9JTDgF7UjfGLR0B1WQ43m36w7NqN6/JU15UPkBol5IbuO X-Received: by 2002:a5d:8a0e:: with SMTP id w14mr5262237iod.94.1631814295375; Thu, 16 Sep 2021 10:44:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631814295; cv=none; d=google.com; s=arc-20160816; b=H3KZ21xq3HIPhkvwgUWewcH+bNCH/KNjiOKggJJD4Xl9fYa92aDBeswx4RoHAGX01D pArMPuqNQZLuugPTXfOt+fF0EQHYUZl4exHhcm8gi4BxooVICoBO5x6SyXfOg7vZc34I twkw44xnF66zdJmNaJF7FDXVgSMabP1lPRNeZ4nfFEM4Vvta0ET0ZSHyb1ciBAkYPCfj TlubYwcHsszkvIQwDyqAIhYcg/1xnaFjRjYs8mGW6Ug3J7cOXbvewAzGKEkiGLs3dajd LxdBnW20BNEcrW5vmhNi/E3oNonV4E9ACPlwisssqZf0TN16+hexY/HOWicka2l4ojgJ SF8g== 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=hADXbxkH20gzmaiMmYPjn2k8/tPl6IWl5X2qVG6Bov0=; b=mhRAwcMk2VrW9COWU1DfEhTCnNBBwnpFj/L0jVEPvB3bTO8orEjHGNYTN9fpBAfq+I o8dh7nk6KXrkxYD2+Nb5iH+5zTeqOl77tdaeMD2mnYXxtrWYHNHQiwKWOkmUCpNFudcC eN09JsINhEnP621Vz2My5eWWMa1C0tgHqbm+dd06CRFuoBsKLod/5TCj6AwGxhjCYxXZ C4VBgjsqubVtKIrGEP1tDgAgHQjbVI+aleK9SFVdo8yMVvpKaztvEgxhquKIUs8KAD09 6WS2UMBraSzZr1PLhemPsh1ZoWlWq9vNLDa6J5CljcyBv8hckjuRBNdYINu162fqfe0K Zrjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=QKj3QARy; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-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 c184si3522977iof.111.2021.09.16.10.44.55; Thu, 16 Sep 2021 10:44:55 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-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=QKj3QARy; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-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 S1356002AbhIPRoq (ORCPT + 11 others); Thu, 16 Sep 2021 13:44:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:55270 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355403AbhIPRl0 (ORCPT ); Thu, 16 Sep 2021 13:41:26 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 06F0961A87; Thu, 16 Sep 2021 16:52:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631811178; bh=TazWVnaXvlgPzxziINEoLaxVj7c0EuAsDDIxn6rASDw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QKj3QARyYgyTDlZwJr2DCGTBsyPOgsDbOf/Ef8NEQnvc5C9Nqa3/r24dLmfifOM2O QS9qJ2wbGPpdznZF0VvwKzbgLyHqJ0ZVepAvaEPBc39DYj2YZqpQu7a50hgrpVlUt8 DF7X34SV///TcaODOhD5MFiPOjYPqvM6R89mh1uo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dietmar Eggemann , Rui Miguel Silva , Sasha Levin Subject: [PATCH 5.14 379/432] usb: isp1760: write to status and address register Date: Thu, 16 Sep 2021 18:02:08 +0200 Message-Id: <20210916155823.665043741@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155810.813340753@linuxfoundation.org> References: <20210916155810.813340753@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Rui Miguel Silva [ Upstream commit 36815a4a0763bb405ebd776c45553005c1ef7a15 ] We were already writing directly the port status register to trigger changes in isp1763. The same is needed in other IP from the family, including also to setup the read address before reading from device. Reported-by: Dietmar Eggemann Tested-by: Dietmar Eggemann Signed-off-by: Rui Miguel Silva Link: https://lore.kernel.org/r/20210827131154.4151862-4-rui.silva@linaro.org Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/isp1760/isp1760-hcd.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) -- 2.30.2 diff --git a/drivers/usb/isp1760/isp1760-hcd.c b/drivers/usb/isp1760/isp1760-hcd.c index d2d19548241e..e517376c3291 100644 --- a/drivers/usb/isp1760/isp1760-hcd.c +++ b/drivers/usb/isp1760/isp1760-hcd.c @@ -182,7 +182,7 @@ struct urb_listitem { struct urb *urb; }; -static const u32 isp1763_hc_portsc1_fields[] = { +static const u32 isp176x_hc_portsc1_fields[] = { [PORT_OWNER] = BIT(13), [PORT_POWER] = BIT(12), [PORT_LSTATUS] = BIT(10), @@ -205,27 +205,28 @@ static u32 isp1760_hcd_read(struct usb_hcd *hcd, u32 field) } /* - * We need, in isp1763, to write directly the values to the portsc1 + * We need, in isp176x, to write directly the values to the portsc1 * register so it will make the other values to trigger. */ static void isp1760_hcd_portsc1_set_clear(struct isp1760_hcd *priv, u32 field, u32 val) { - u32 bit = isp1763_hc_portsc1_fields[field]; - u32 port_status = readl(priv->base + ISP1763_HC_PORTSC1); + u32 bit = isp176x_hc_portsc1_fields[field]; + u16 portsc1_reg = priv->is_isp1763 ? ISP1763_HC_PORTSC1 : + ISP176x_HC_PORTSC1; + u32 port_status = readl(priv->base + portsc1_reg); if (val) - writel(port_status | bit, priv->base + ISP1763_HC_PORTSC1); + writel(port_status | bit, priv->base + portsc1_reg); else - writel(port_status & ~bit, priv->base + ISP1763_HC_PORTSC1); + writel(port_status & ~bit, priv->base + portsc1_reg); } static void isp1760_hcd_write(struct usb_hcd *hcd, u32 field, u32 val) { struct isp1760_hcd *priv = hcd_to_priv(hcd); - if (unlikely(priv->is_isp1763 && - (field >= PORT_OWNER && field <= PORT_CONNECT))) + if (unlikely((field >= PORT_OWNER && field <= PORT_CONNECT))) return isp1760_hcd_portsc1_set_clear(priv, field, val); isp1760_field_write(priv->fields, field, val); @@ -367,8 +368,7 @@ static void isp1760_mem_read(struct usb_hcd *hcd, u32 src_offset, void *dst, { struct isp1760_hcd *priv = hcd_to_priv(hcd); - isp1760_hcd_write(hcd, MEM_BANK_SEL, ISP_BANK_0); - isp1760_hcd_write(hcd, MEM_START_ADDR, src_offset); + isp1760_reg_write(priv->regs, ISP176x_HC_MEMORY, src_offset); ndelay(100); bank_reads8(priv->base, src_offset, ISP_BANK_0, dst, bytes); @@ -496,8 +496,7 @@ static void isp1760_ptd_read(struct usb_hcd *hcd, u32 ptd_offset, u32 slot, u16 src_offset = ptd_offset + slot * sizeof(*ptd); struct isp1760_hcd *priv = hcd_to_priv(hcd); - isp1760_hcd_write(hcd, MEM_BANK_SEL, ISP_BANK_0); - isp1760_hcd_write(hcd, MEM_START_ADDR, src_offset); + isp1760_reg_write(priv->regs, ISP176x_HC_MEMORY, src_offset); ndelay(90); bank_reads8(priv->base, src_offset, ISP_BANK_0, (void *)ptd,