From patchwork Fri Jun 2 11:47:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ilpo_J=C3=A4rvinen?= X-Patchwork-Id: 102524 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp982236vqr; Fri, 2 Jun 2023 05:15:55 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ57xIZgXDRKR7sUd188B4WOnHq/YDcUWRtH5TREaPymkoET4lIC2DA4Ro3Tvz8xnyP+wOVl X-Received: by 2002:a05:6a00:aca:b0:644:d775:60bb with SMTP id c10-20020a056a000aca00b00644d77560bbmr10250982pfl.20.1685708155490; Fri, 02 Jun 2023 05:15:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685708155; cv=none; d=google.com; s=arc-20160816; b=fX65WNPsV940G58MOivwYzDC7rw+WyfXhTrGXbVPhBTNR1NQ/tvk9uphGa8/Fj0a2n GqZBmxnOdD5AXVnqagVNQ614MSp184b/846y67UL0unzAE9XMOvVrKu/OtY1xQDMPMEz iLgdYUvWqa6vvk6NqV90W561Lw/1gm0EDsl0OkmQgl5Q9cNTulPd+MvJUAbphsN9iE9Y S+r9D+e1kU7FgoncVCfmFO7frUCtCREvGJOPxQU2d6JtcNoETFLNj0XPrJ7YLzdWpBKQ H5KvaSixVSH+1bEuHXVJfzPUya52v8nK9XXH9e6UMcwvBPZJJmL6MC3Qm1TJYCn8Xrvc mhgg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Eg0PEozLHnFjkWuMghdAqax0e4/Dlg1eAKkdw5VoWTg=; b=QPRiSWxks5JJ3RTmQcEUK1HEv18Pyscj1njrG+J/g4kJObAu5BrSyyiUrXQc1xOzAg Hvd0dDJo2byPJd5CbhLIwlpDfRZU/8k7iclG657SnX/CwvlScGCWk+eiXcFA08aW0fZT Sul+kQKdUWUHOgVuhMwH0uTz3TLT57Ga7jW1MCDZ+FA9kaet8AKGJ9PFx46Dy1cosV9U KfSbSVFQHTvmjF+vnFSBOi5LzTNzqf9k2VG0Y/cJ1L/qNoR+Jr/GeBH+cNhk81UJDC1I 4dqeQjA2/x/goRvnHZ+J+7OvUtzK4fpVLLbVTLohBvdyrG8wJicPv52pKaWpj3KPfi+t ZW7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BemgC809; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t127-20020a637885000000b0052c7ad564e2si926082pgc.707.2023.06.02.05.15.36; Fri, 02 Jun 2023 05:15:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BemgC809; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235195AbjFBLte (ORCPT + 99 others); Fri, 2 Jun 2023 07:49:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235236AbjFBLt2 (ORCPT ); Fri, 2 Jun 2023 07:49:28 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D000610EF; Fri, 2 Jun 2023 04:48:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685706538; x=1717242538; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9QPnZYdorgxm2tG/6TS44yuCtoro1PqrgtUx93Xiu78=; b=BemgC80972E9OTSM/YDZfiSp1yK4rX6yaztWmgXZ1zRtXNa5YqK1zVrx gGwRFnWC/+TDutQFzQCSWYu9Nh6ygVjgozKZ7q6MmZB6QETSNAaVvTx0O XHytvj9ytyn98TEgWyJGMz3LzvYQSJF28tfdiGmEeml22BnOJw8TvIIGe 2iNnTZWYNftxR0uXiRleNxbMXCet1zhFUrQY2buDHeyI5rq3Yb7iR2q+t khisMk85QVIHb7DhWHbFtufjSH37c1lv6NC5pNUSyEntSlYUKre9AFGmt /eq0QIOoM6h9xjoH+bKvgfMwumG7f3qVMAWQny7z13H3vqG60XgA/IjTC w==; X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="358279676" X-IronPort-AV: E=Sophos;i="6.00,212,1681196400"; d="scan'208";a="358279676" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2023 04:48:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="707819452" X-IronPort-AV: E=Sophos;i="6.00,212,1681196400"; d="scan'208";a="707819452" Received: from rspatil-mobl3.gar.corp.intel.com (HELO ijarvine-MOBL2.ger.corp.intel.com) ([10.251.208.112]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2023 04:48:29 -0700 From: =?utf-8?q?Ilpo_J=C3=A4rvinen?= To: linux-pci@vger.kernel.org, Bjorn Helgaas , Lorenzo Pieralisi , Rob Herring , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Lukas Wunner , "Rafael J . Wysocki" , Heiner Kallweit , Emmanuel Grumbach , Hector Martin , Sven Peter , Alyssa Rosenzweig , Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz , Bjorn Helgaas , asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= Subject: [RFC PATCH v1 06/13] Bluetooth: hci_bcm4377: Convert aspm disable to quirk Date: Fri, 2 Jun 2023 14:47:43 +0300 Message-Id: <20230602114751.19671-7-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230602114751.19671-1-ilpo.jarvinen@linux.intel.com> References: <20230602114751.19671-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767593115148798880?= X-GMAIL-MSGID: =?utf-8?q?1767593115148798880?= pci_disable_link_state() was made reliable regardless of ASPM CONFIG and OS being disallowed to change ASPM states to allow drivers to rely on pci_disable_link_state() working. Remove driver working around unreliable pci_disable_link_state() from hci_bcm4377 driver and add a PCI quirk to disable ASPM. Signed-off-by: Ilpo Järvinen --- drivers/bluetooth/hci_bcm4377.c | 20 -------------------- drivers/pci/quirks.c | 3 +++ 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/drivers/bluetooth/hci_bcm4377.c b/drivers/bluetooth/hci_bcm4377.c index 19ad0e788646..2348ee2380db 100644 --- a/drivers/bluetooth/hci_bcm4377.c +++ b/drivers/bluetooth/hci_bcm4377.c @@ -490,7 +490,6 @@ struct bcm4377_data; * clear_pciecfg_subsystem_ctrl_bit19: Set to true if bit 19 in the * vendor-specific subsystem control * register has to be cleared - * disable_aspm: Set to true if ASPM must be disabled due to hardware errata * broken_ext_scan: Set to true if the chip erroneously claims to support * extended scanning * broken_mws_transport_config: Set to true if the chip erroneously claims to @@ -509,7 +508,6 @@ struct bcm4377_hw { unsigned long has_bar0_core2_window2 : 1; unsigned long clear_pciecfg_subsystem_ctrl_bit19 : 1; - unsigned long disable_aspm : 1; unsigned long broken_ext_scan : 1; unsigned long broken_mws_transport_config : 1; @@ -2222,20 +2220,6 @@ static int bcm4377_probe_of(struct bcm4377_data *bcm4377) return 0; } -static void bcm4377_disable_aspm(struct bcm4377_data *bcm4377) -{ - pci_disable_link_state(bcm4377->pdev, - PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1); - - /* - * pci_disable_link_state can fail if either CONFIG_PCIEASPM is disabled - * or if the BIOS hasn't handed over control to us. We must *always* - * disable ASPM for this device due to hardware errata though. - */ - pcie_capability_clear_word(bcm4377->pdev, PCI_EXP_LNKCTL, - PCI_EXP_LNKCTL_ASPMC); -} - static void bcm4377_pci_free_irq_vectors(void *data) { pci_free_irq_vectors(data); @@ -2288,9 +2272,6 @@ static int bcm4377_probe(struct pci_dev *pdev, const struct pci_device_id *id) return -ENODEV; } - if (bcm4377->hw->disable_aspm) - bcm4377_disable_aspm(bcm4377); - ret = pci_reset_function_locked(pdev); if (ret) dev_warn( @@ -2448,7 +2429,6 @@ static const struct bcm4377_hw bcm4377_hw_variants[] = { .otp_offset = 0x4120, .bar0_window1 = 0x1800b000, .bar0_window2 = 0x1810c000, - .disable_aspm = true, .broken_ext_scan = true, .send_ptb = bcm4377_send_ptb, }, diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index f4e2a88729fd..25b7d7bcb279 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -2407,6 +2407,9 @@ static void quirk_disable_aspm_l0s_l1(struct pci_dev *dev) */ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASMEDIA, 0x1080, quirk_disable_aspm_l0s_l1); +/* BCM4377 must always disable ASPM due to hardware errata. */ +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, 0x5fa0, quirk_disable_aspm_l0s_l1); + /* * Some Pericom PCIe-to-PCI bridges in reverse mode need the PCIe Retrain * Link bit cleared after starting the link retrain process to allow this