Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp1038309ybj; Thu, 7 May 2020 13:20:11 -0700 (PDT) X-Google-Smtp-Source: APiQypKuOwJqkwdJpVGBknXY4ZZH8jy3e8cPru9FcMsGw5pKb44S1ShCovME/X8Nw6WjidA6lKFz X-Received: by 2002:a50:9e2a:: with SMTP id z39mr14064227ede.371.1588882811362; Thu, 07 May 2020 13:20:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588882811; cv=none; d=google.com; s=arc-20160816; b=lnbyokTIHUMroTrN0p/plpW8ykEGkDTEs3j6+oZeWhs8og7ecVJjfkrKcbmqMFufFZ lUpmbSP3WcO3F8jeErujTk10ObiSVyYuLItGMC0Dh9sDiu2esL8jZNiVMuCpJmulSS8o OXjF5gSnI1w6U8CVt5mT4MgMP1ozCgJ7o9lqMKh8/yw0C2P8jSUGS15r/8Njyjb4XElW XX5SMvwi2bgVs+EPY0+qnFNUH8d2k/rDVdLQYPdUhg86FJayS7tYZJJg/elKNn38Zm1K r2nEmKi+fOkfH7XTL+jE6FpeCXYivTrFrtGtw43Tlg+t5xpcWJz4lHudaef1+8fOUzmX UJcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter; bh=QZ7ROpaynBjVEx3BK2y6bkYpEg5hEfxcG4NAaK8c6jA=; b=opPrl6x52IR1hyGflLeGrUkioZDGqnmXA+L+0IidM/sVhIAykITg8IZwzhPBEI7U3x O/8mZTVv3lKLtJtbXpOKkiuqssVzmoH80+TTqKvaZHQmYVPLibPCr943fozv8LD3v/g0 KvAp7S3hY0juxP6EEmZaxE0NKAi3hNPcskEqi8NCU6to+w5eO+REpibt5eR0YXmDwbzZ FUOQk12TRd2xCXeAnHSyjHEuhmJqktgpokG990RcDjfGwZOQgtZ3Nzl0ttpq0dkp2uGY r+Cp5KUpubgUJBwygbggDwREWLBgzdKhs7jqI7PujNhe8IcqXuBCmr0WQzmqFDmJoKnD u7gg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=g6WaUiIY; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gj19si3888882ejb.297.2020.05.07.13.19.48; Thu, 07 May 2020 13:20:11 -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=@broadcom.com header.s=dkimrelay header.b=g6WaUiIY; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728609AbgEGUQI (ORCPT + 99 others); Thu, 7 May 2020 16:16:08 -0400 Received: from rnd-relay.smtp.broadcom.com ([192.19.229.170]:47600 "EHLO rnd-relay.smtp.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728596AbgEGUQG (ORCPT ); Thu, 7 May 2020 16:16:06 -0400 Received: from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net [10.75.242.48]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 4D56130C07C; Thu, 7 May 2020 13:15:29 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 4D56130C07C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1588882529; bh=oFHk9VaUvsDwZCOGkYPtno7t1fm1Qk5TvgnXILVu774=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=g6WaUiIYt7T8JBD5hNN4dnAYffCjzYDtC1OPxx+CsAyVzyC1rKGHqKYwFYl0qwsn6 NqNl5BXxDUxd6qLir88ZrPxmM/j75k8dm4JA4PtuKaaynO1bw7nUXzaTet8rMSSQMv VBhT1XeL7Lt4iEFSq3UgmeCiX9XH0Jr7CGA7G/KY= Received: from stbsrv-and-01.and.broadcom.net (stbsrv-and-01.and.broadcom.net [10.28.16.211]) by mail-irv-17.broadcom.com (Postfix) with ESMTP id 682E5140069; Thu, 7 May 2020 13:16:03 -0700 (PDT) From: Jim Quinlan To: james.quinlan@broadcom.com Cc: Jim Quinlan , Nicolas Saenz Julienne , Lorenzo Pieralisi , Rob Herring , Bjorn Helgaas , Florian Fainelli , bcm-kernel-feedback-list@broadcom.com (maintainer:BROADCOM BCM7XXX ARM ARCHITECTURE), linux-rpi-kernel@lists.infradead.org (moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE), linux-arm-kernel@lists.infradead.org (moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE), linux-pci@vger.kernel.org (open list:PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v3 4/4] PCI: brcmstb: Disable L0s component of ASPM if requested Date: Thu, 7 May 2020 16:15:43 -0400 Message-Id: <20200507201544.43432-5-james.quinlan@broadcom.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200507201544.43432-1-james.quinlan@broadcom.com> References: <20200507201544.43432-1-james.quinlan@broadcom.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jim Quinlan Some informal internal experiments has shown that the BrcmSTB ASPM L0s savings may introduce an undesirable noise signal on some customers' boards. In addition, L0s was found lacking in realized power savings, especially relative to the L1 ASPM component. This is BrcmSTB's experience and may not hold for others. At any rate, if the 'aspm-no-l0s' property is present L0s will be disabled. Signed-off-by: Jim Quinlan Acked-by: Florian Fainelli Acked-by: Nicolas Saenz Julienne --- drivers/pci/controller/pcie-brcmstb.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index 5b0dec5971b8..73020b4ff090 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -41,6 +41,9 @@ #define PCIE_RC_CFG_PRIV1_ID_VAL3 0x043c #define PCIE_RC_CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK 0xffffff +#define PCIE_RC_CFG_PRIV1_LINK_CAPABILITY 0x04dc +#define PCIE_RC_CFG_PRIV1_LINK_CAPABILITY_ASPM_SUPPORT_MASK 0xc00 + #define PCIE_RC_DL_MDIO_ADDR 0x1100 #define PCIE_RC_DL_MDIO_WR_DATA 0x1104 #define PCIE_RC_DL_MDIO_RD_DATA 0x1108 @@ -693,7 +696,7 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie) int num_out_wins = 0; u16 nlw, cls, lnksta; int i, ret; - u32 tmp; + u32 tmp, aspm_support; /* Reset the bridge */ brcm_pcie_bridge_sw_init_set(pcie, 1); @@ -803,6 +806,15 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie) num_out_wins++; } + /* Don't advertise L0s capability if 'aspm-no-l0s' */ + aspm_support = PCIE_LINK_STATE_L1; + if (!of_property_read_bool(pcie->np, "aspm-no-l0s")) + aspm_support |= PCIE_LINK_STATE_L0S; + tmp = readl(base + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY); + u32p_replace_bits(&tmp, aspm_support, + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY_ASPM_SUPPORT_MASK); + writel(tmp, base + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY); + /* * For config space accesses on the RC, show the right class for * a PCIe-PCIe bridge (the default setting is to be EP mode). -- 2.17.1