From 323978eed5b7645dbd6783c1df7540a6f75f4211 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 12 Sep 2020 13:23:31 +0100 Subject: upstream fixes for SDIO speed issues, certain mSD cards on Raspberry Pi 4, older brcm sdio WiFi --- ...-Re-order-PCIe-aperture-mappings-to-suppo.patch | 1 - ...-valid-PWM-period-for-VDD_GPU-on-Tegra210.patch | 1 - brcmfmac-BCM4329-Fixes-and-improvement.patch | 372 +++++++++++++++++++++ kernel.spec | 17 +- ...-Enable-eMMC-DDR-3.3V-support-for-bcm2711.patch | 98 ++++++ mmc-sdio-Use-mmc_pre_req-mmc_post_req.patch | 156 +++++++++ 6 files changed, 641 insertions(+), 4 deletions(-) create mode 100644 brcmfmac-BCM4329-Fixes-and-improvement.patch create mode 100644 mmc-sdhci-iproc-Enable-eMMC-DDR-3.3V-support-for-bcm2711.patch create mode 100644 mmc-sdio-Use-mmc_pre_req-mmc_post_req.patch diff --git a/0002-arm64-tegra-Re-order-PCIe-aperture-mappings-to-suppo.patch b/0002-arm64-tegra-Re-order-PCIe-aperture-mappings-to-suppo.patch index d184228ea..96463349e 100644 --- a/0002-arm64-tegra-Re-order-PCIe-aperture-mappings-to-suppo.patch +++ b/0002-arm64-tegra-Re-order-PCIe-aperture-mappings-to-suppo.patch @@ -98,4 +98,3 @@ index 4bc187a4eacdb..2b378fa06d19e 100644 pcie_ep@14160000 { -- 2.26.2 - diff --git a/arm64-tegra-Use-valid-PWM-period-for-VDD_GPU-on-Tegra210.patch b/arm64-tegra-Use-valid-PWM-period-for-VDD_GPU-on-Tegra210.patch index cd37e70a1..a09b1b115 100644 --- a/arm64-tegra-Use-valid-PWM-period-for-VDD_GPU-on-Tegra210.patch +++ b/arm64-tegra-Use-valid-PWM-period-for-VDD_GPU-on-Tegra210.patch @@ -45,4 +45,3 @@ index 9bc52fdb393c8..ebaac57853138 100644 regulator-max-microvolt = <1320000>; -- 2.26.2 - diff --git a/brcmfmac-BCM4329-Fixes-and-improvement.patch b/brcmfmac-BCM4329-Fixes-and-improvement.patch new file mode 100644 index 000000000..b492f82c9 --- /dev/null +++ b/brcmfmac-BCM4329-Fixes-and-improvement.patch @@ -0,0 +1,372 @@ +From patchwork Sun Aug 30 19:14:37 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Dmitry Osipenko +X-Patchwork-Id: 11745283 +X-Patchwork-Delegate: kvalo@adurom.com +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 02F8E722 + for ; + Sun, 30 Aug 2020 19:15:31 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) + by mail.kernel.org (Postfix) with ESMTP id D325020757 + for ; + Sun, 30 Aug 2020 19:15:30 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com + header.b="XOye4I75" +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1726492AbgH3TPQ (ORCPT + ); + Sun, 30 Aug 2020 15:15:16 -0400 +Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36382 "EHLO + lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S1726178AbgH3TPH (ORCPT + ); + Sun, 30 Aug 2020 15:15:07 -0400 +Received: from mail-lf1-x143.google.com (mail-lf1-x143.google.com + [IPv6:2a00:1450:4864:20::143]) + by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B885C061575; + Sun, 30 Aug 2020 12:15:06 -0700 (PDT) +Received: by mail-lf1-x143.google.com with SMTP id y2so951774lfy.10; + Sun, 30 Aug 2020 12:15:06 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20161025; + h=from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; + bh=hzL71nqb/6BZxUitP92QceAo8sdBLgT31i3ar+cwVk4=; + b=XOye4I75cIfJ4wkN4RaeluIx+/YAJsxlMpAnP498/xZTl1BTh8eSlfQif5JouocnSh + 14l3fBQ+A+yleGcThqMh1IaJriMgqMbIE00NyGf7Vle0M2E7WLVo9PlrLCn9vtgowgLt + Lr4Mu7V/lWdptapsH5tCqMvP1g5ir1mEsMMokwajMTno6GR0SBVHl/7ypVl5YA3p4HoF + fFymnbrHgHbTrzQ/PoyTHfJ+z2cr7zsyoWJ2DNueWkIQjuS/8ueDks4amJJKs+KgB+yp + +XRynXf/t0fyF8u1wenwv3sbeaCt3sIPLNePGmjRYeaXo5pTqEUgNHd6MH2PGfsDTuU0 + 5MTg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to + :references:mime-version:content-transfer-encoding; + bh=hzL71nqb/6BZxUitP92QceAo8sdBLgT31i3ar+cwVk4=; + b=j8AOqXUrl/hkYHnFrnNd2FRUeIHMr2dpaVrKcJBXuHajNJC8b3YN2G9F2K+lkC+ZxC + w1B7sH1DNxY8u4wIuHketyNteuSdFH9vC+VZhu5DY5Bz0snrsLK43fS/8InrBWMd9/OZ + 3bt86DxIWv9szZELmV5sCnwAh5U9CKk95vI5k+mKJLfv8mmqgyJ2rbPBZO0xNWbyRMp3 + Bu+B+ze0mY9xjnOSwXK8dUvlTpRNr9zOeXmzjtWsb3xFgFN1PZ5wiD3bQ5m7XoYqQEXb + Ah+zOiBL3P2mZUM54OyHP+HolPq8/V0zKDuw06na41SW1cJNuZUIG6W1m/x75S6hJO4D + 2lJg== +X-Gm-Message-State: AOAM533MF2BJ56mP1JcVq45SsbuqEwSox1UmefQdmOHheDJSUx5w2LUC + ca86fl0ZnPg4zrXg3bFav48= +X-Google-Smtp-Source: + ABdhPJx6cYCkNqBsgfZJn1WvrwBAiI7kWYd9Yi9pQ5L2953d0O0W457Bcur/fqHaFOJeiOQAPpwzwg== +X-Received: by 2002:a19:f510:: with SMTP id j16mr337056lfb.169.1598814904892; + Sun, 30 Aug 2020 12:15:04 -0700 (PDT) +Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. + [109.252.170.211]) + by smtp.gmail.com with ESMTPSA id + e23sm1409709lfj.80.2020.08.30.12.15.04 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Sun, 30 Aug 2020 12:15:04 -0700 (PDT) +From: Dmitry Osipenko +To: Arend van Spriel , + Franky Lin , + Hante Meuleman , + Chi-Hsien Lin , + Wright Feng , + Kalle Valo +Cc: linux-wireless@vger.kernel.org, + brcm80211-dev-list.pdl@broadcom.com, + brcm80211-dev-list@cypress.com, netdev@vger.kernel.org, + linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org +Subject: [PATCH v3 1/3] brcmfmac: increase F2 watermark for BCM4329 +Date: Sun, 30 Aug 2020 22:14:37 +0300 +Message-Id: <20200830191439.10017-2-digetx@gmail.com> +X-Mailer: git-send-email 2.27.0 +In-Reply-To: <20200830191439.10017-1-digetx@gmail.com> +References: <20200830191439.10017-1-digetx@gmail.com> +MIME-Version: 1.0 +Sender: linux-wireless-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-wireless@vger.kernel.org + +This patch fixes SDHCI CRC errors during of RX throughput testing on +BCM4329 chip if SDIO BUS is clocked above 25MHz. In particular the +checksum problem is observed on NVIDIA Tegra20 SoCs. The good watermark +value is borrowed from downstream BCMDHD driver and it's matching to the +value that is already used for the BCM4339 chip, hence let's re-use it +for BCM4329. + +Reviewed-by: Arend van Spriel +Signed-off-by: Dmitry Osipenko +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index d1b96bad2718..b16944a898f9 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -4278,6 +4278,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, + brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL, + CY_43012_MESBUSYCTRL, &err); + break; ++ case SDIO_DEVICE_ID_BROADCOM_4329: + case SDIO_DEVICE_ID_BROADCOM_4339: + brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes for 4339\n", + CY_4339_F2_WATERMARK); + +From patchwork Sun Aug 30 19:14:38 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Dmitry Osipenko +X-Patchwork-Id: 11745287 +X-Patchwork-Delegate: kvalo@adurom.com +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8D83D722 + for ; + Sun, 30 Aug 2020 19:18:07 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) + by mail.kernel.org (Postfix) with ESMTP id 74984206F0 + for ; + Sun, 30 Aug 2020 19:18:07 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com + header.b="nVMf6eR/" +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1727940AbgH3TRr (ORCPT + ); + Sun, 30 Aug 2020 15:17:47 -0400 +Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36384 "EHLO + lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S1726350AbgH3TPI (ORCPT + ); + Sun, 30 Aug 2020 15:15:08 -0400 +Received: from mail-lf1-x141.google.com (mail-lf1-x141.google.com + [IPv6:2a00:1450:4864:20::141]) + by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6E897C061236; + Sun, 30 Aug 2020 12:15:07 -0700 (PDT) +Received: by mail-lf1-x141.google.com with SMTP id j15so2315573lfg.7; + Sun, 30 Aug 2020 12:15:07 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20161025; + h=from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; + bh=85fBH067dHvKQNq6ek+W6lpUInMb+ZStwZLTCqTuQ3g=; + b=nVMf6eR/tzJR9bU6YV5ktJWXhIRVVdwtYx5dR5sOF9HNUZJR1lw0R2eZ5yKGcbs3Ij + UCrio8mvGQhynAaPTXjMhm57mDu723ApUr0TiZXjmUoJrFQVIFl6VYZeCDu3dXXFGUw0 + XasSLQZ6ak9UxEk4Xen3Q2U/Zr/P+/jB0QY1vR+MRsiIFzZXwQRQpM9IJzj4yIYopB5X + 9XhWNhf2QWh9gH61eTumnKsNzptLg/c8atZt15ncup5uu1C2f/rwt/4dav6jO2dmbGAs + p9NeFTAyGXpQxrzCtfDUCTXvmsS6UEY3o15iWQaZopVbo0ypnts/6Vg8upR1VNQVxnM7 + E7Zw== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to + :references:mime-version:content-transfer-encoding; + bh=85fBH067dHvKQNq6ek+W6lpUInMb+ZStwZLTCqTuQ3g=; + b=WwmOJDBXyk7Su9lj9yFvo0X22q549x/nNNUuUYCmUf8OjvUL6LwAkcQ7l+F6X41BtP + n1fYqGH6S7w68U3pIL2yyzR7YOl1NDYvZp3LRNGc6Y0dljwZbMMrbTXkdnimwrVneXLQ + CLjOSIYQkJgtWX9ZG/Uaq+hnaY7BX9EMntr7mXYbD+O8Xmr8/Zb/jUJSKiKIxAVW48JM + z2B7XRLEfmd8ELQoMhqtCw/23wbQ6tnT5tdtt+ngDJWh7aXnUaVgO8i/tQf0Th3JXBdj + dB5/P8FDMKrLNwxVYaaHyo/vs86AeUzj+J7Vu+jSQYbWobKSsN0h9FsVwsoEzud1cPlw + s9Tg== +X-Gm-Message-State: AOAM531EgBgv8kHi8OlvBWwXAThNCUT/1OO1iu8iU00rAeqI5Tb40pod + ZyIrbVjNZJe6MgLKqLMeZrw= +X-Google-Smtp-Source: + ABdhPJzI4lUuYNLpOO2XLO2AmkS9fShcfxSPyVOk6XVuyEYlvT5tmtBLoLVIApzOMF3Luuy0a5TW7Q== +X-Received: by 2002:ac2:5e2c:: with SMTP id o12mr3918764lfg.71.1598814905875; + Sun, 30 Aug 2020 12:15:05 -0700 (PDT) +Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. + [109.252.170.211]) + by smtp.gmail.com with ESMTPSA id + e23sm1409709lfj.80.2020.08.30.12.15.04 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Sun, 30 Aug 2020 12:15:05 -0700 (PDT) +From: Dmitry Osipenko +To: Arend van Spriel , + Franky Lin , + Hante Meuleman , + Chi-Hsien Lin , + Wright Feng , + Kalle Valo +Cc: linux-wireless@vger.kernel.org, + brcm80211-dev-list.pdl@broadcom.com, + brcm80211-dev-list@cypress.com, netdev@vger.kernel.org, + linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org +Subject: [PATCH v3 2/3] brcmfmac: drop chip id from debug messages +Date: Sun, 30 Aug 2020 22:14:38 +0300 +Message-Id: <20200830191439.10017-3-digetx@gmail.com> +X-Mailer: git-send-email 2.27.0 +In-Reply-To: <20200830191439.10017-1-digetx@gmail.com> +References: <20200830191439.10017-1-digetx@gmail.com> +MIME-Version: 1.0 +Sender: linux-wireless-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-wireless@vger.kernel.org + +The chip ID was already printed out at the time when debug message about +the changed F2 watermark is printed, hence let's drop the unnecessary part +of the debug messages. This cleans code a tad and also allows to re-use +the F2 watermark debug messages by multiple chips. + +Suggested-by: Arend van Spriel +Signed-off-by: Dmitry Osipenko +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +index b16944a898f9..d4989e0cd7be 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -4280,7 +4280,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, + break; + case SDIO_DEVICE_ID_BROADCOM_4329: + case SDIO_DEVICE_ID_BROADCOM_4339: +- brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes for 4339\n", ++ brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n", + CY_4339_F2_WATERMARK); + brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK, + CY_4339_F2_WATERMARK, &err); +@@ -4293,7 +4293,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, + CY_4339_MESBUSYCTRL, &err); + break; + case SDIO_DEVICE_ID_BROADCOM_43455: +- brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes for 43455\n", ++ brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n", + CY_43455_F2_WATERMARK); + brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK, + CY_43455_F2_WATERMARK, &err); + +From patchwork Sun Aug 30 19:14:39 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Dmitry Osipenko +X-Patchwork-Id: 11745291 +X-Patchwork-Delegate: kvalo@adurom.com +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BC61D722 + for ; + Sun, 30 Aug 2020 19:18:14 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) + by mail.kernel.org (Postfix) with ESMTP id A440D20757 + for ; + Sun, 30 Aug 2020 19:18:14 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com + header.b="ADD6Kq4a" +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1727902AbgH3TRq (ORCPT + ); + Sun, 30 Aug 2020 15:17:46 -0400 +Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36392 "EHLO + lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S1726380AbgH3TPJ (ORCPT + ); + Sun, 30 Aug 2020 15:15:09 -0400 +Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com + [IPv6:2a00:1450:4864:20::142]) + by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6439FC061239; + Sun, 30 Aug 2020 12:15:08 -0700 (PDT) +Received: by mail-lf1-x142.google.com with SMTP id j15so2315593lfg.7; + Sun, 30 Aug 2020 12:15:08 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20161025; + h=from:to:cc:subject:date:message-id:in-reply-to:references + :mime-version:content-transfer-encoding; + bh=WKk6KWPNkMHUCww/FbErLxUYYQtEUh3n/PTtmJB/IIQ=; + b=ADD6Kq4arZJOO7Z+X6dlbNFUKa2MGhu79OcOljRz3WAcc/N3H23SdadMXUusZl7Re7 + mavcADGOOGjw4YPLh4Bd3AHe3Wf3GrR9xszVDjKeNWBVzpgfPFpbu+G5v/ZCc1IocLez + Tml2HhWF++QwC8/gg0QSMJMYiVTHYrz7Mfq31KkwcMzdX/uXIwpZBuRtIx3Vf6OfTE4I + gSfTcZ6mcSbFla2yJur9lviMamt/2uiHZG0/UTLDqfDQ0fXciUFWXW/wU1YYVwLxynkp + 32H0oWWSihfW4LFt7gufNGgSOCh6YMorVxHCY3+a2JagEhMaXuLn853leokAN8VD3nsO + IjnQ== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to + :references:mime-version:content-transfer-encoding; + bh=WKk6KWPNkMHUCww/FbErLxUYYQtEUh3n/PTtmJB/IIQ=; + b=P70ZXffe7IiriynRgLFOrgujg3zCp+qiQV2DtraBUnPXzHbxNDRH7MnRX8RyYwJZs7 + MDwZwyOsryxbtpv/1lQfakB0pFKDzMAqpRhxIc4amXyIBz2g4uoZIDStNSODVhXtjG5H + h4uPuSz9neHI7vO4/7Yp1kvBCS29fbXLIKIFGR4QrwqWxGuaMhNyeXs2Eb3K/jkyfDjn + 1HVDqw+yW5WX2R5Rq7xkjw05AMrqSVvecbX+WV/ksoCgYd3N9bS52B0rBA3Qd6uOADTj + 82vYn1zNANhjSnTRMC0hOTZmzmnqZsyksYdQrpbyEsdpHaKbB6GkX7ylp3TM9XDpD9xK + +ROQ== +X-Gm-Message-State: AOAM532osjv7Nw1P0/HRBwzPySBJZh+vqXrZj/Ko6Yzt0eyt2qeOFDG3 + JOT89QLhVftNg53aBYKa2p4= +X-Google-Smtp-Source: + ABdhPJzL0Cdo7AKGH5FiC2AREv1bSdtUCg+BEl1uu43NLTd1wRmGMfv3vj1BvcduUPeX7jN48VJ+7Q== +X-Received: by 2002:ac2:41cc:: with SMTP id d12mr4018561lfi.20.1598814906867; + Sun, 30 Aug 2020 12:15:06 -0700 (PDT) +Received: from localhost.localdomain (109-252-170-211.dynamic.spd-mgts.ru. + [109.252.170.211]) + by smtp.gmail.com with ESMTPSA id + e23sm1409709lfj.80.2020.08.30.12.15.05 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Sun, 30 Aug 2020 12:15:06 -0700 (PDT) +From: Dmitry Osipenko +To: Arend van Spriel , + Franky Lin , + Hante Meuleman , + Chi-Hsien Lin , + Wright Feng , + Kalle Valo +Cc: linux-wireless@vger.kernel.org, + brcm80211-dev-list.pdl@broadcom.com, + brcm80211-dev-list@cypress.com, netdev@vger.kernel.org, + linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org +Subject: [PATCH v3 3/3] brcmfmac: set F2 SDIO block size to 128 bytes for + BCM4329 +Date: Sun, 30 Aug 2020 22:14:39 +0300 +Message-Id: <20200830191439.10017-4-digetx@gmail.com> +X-Mailer: git-send-email 2.27.0 +In-Reply-To: <20200830191439.10017-1-digetx@gmail.com> +References: <20200830191439.10017-1-digetx@gmail.com> +MIME-Version: 1.0 +Sender: linux-wireless-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-wireless@vger.kernel.org + +Setting F2 block size to 128 bytes for BCM4329 allows to significantly +improve RX throughput on NVIDIA Tegra20. Before this change the throughput +was capped to 30 Mbit/s on Tegra, now throughput is at 40 Mbit/s, which is +a maximum throughput for the BCM4329 chip. The F2 block size is borrowed +from the downstream BCMDHD driver. The comment in the BCMDHD driver says +that 128B improves throughput and turns out that it works for the brcmfmac +as well. + +Signed-off-by: Dmitry Osipenko +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +index 0dc4de2fa9f6..318bd00bf94f 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +@@ -45,6 +45,7 @@ + #define SDIO_FUNC2_BLOCKSIZE 512 + #define SDIO_4373_FUNC2_BLOCKSIZE 256 + #define SDIO_435X_FUNC2_BLOCKSIZE 256 ++#define SDIO_4329_FUNC2_BLOCKSIZE 128 + /* Maximum milliseconds to wait for F2 to come up */ + #define SDIO_WAIT_F2RDY 3000 + +@@ -920,6 +921,9 @@ int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev) + case SDIO_DEVICE_ID_BROADCOM_4356: + f2_blksz = SDIO_435X_FUNC2_BLOCKSIZE; + break; ++ case SDIO_DEVICE_ID_BROADCOM_4329: ++ f2_blksz = SDIO_4329_FUNC2_BLOCKSIZE; ++ break; + default: + break; + } diff --git a/kernel.spec b/kernel.spec index 10ed61974..853b345ac 100644 --- a/kernel.spec +++ b/kernel.spec @@ -867,10 +867,18 @@ Patch105: 0001-platform-x86-thinkpad_acpi-lap-or-desk-mode-interfac.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1874117 Patch107: 0001-drivers-perf-xgene_pmu-Fix-uninitialized-resource-st.patch -Patch110: memory-tegra-Remove-GPU-from-DRM-IOMMU-group.patch +# https://patchwork.kernel.org/patch/11745283/ +Patch108: brcmfmac-BCM4329-Fixes-and-improvement.patch + +# https://patchwork.kernel.org/patch/11743769/ +Patch109: mmc-sdhci-iproc-Enable-eMMC-DDR-3.3V-support-for-bcm2711.patch +# https://www.spinics.net/lists/linux-mmc/msg60653.html +Patch111: mmc-sdio-Use-mmc_pre_req-mmc_post_req.patch + +Patch112: memory-tegra-Remove-GPU-from-DRM-IOMMU-group.patch # CVE-2020-25211 rhbz 1877571 1877572 -Patch111: netfilter-ctnetlink-add-range-check-for-l3-l4-protonum.patch +Patch113: netfilter-ctnetlink-add-range-check-for-l3-l4-protonum.patch # END OF PATCH DEFINITIONS @@ -2976,6 +2984,11 @@ fi # # %changelog +* Sat Sep 12 2020 Peter Robinson +- Fix for SDIO speed issue +- Fix for certain mSD cards on Raspberry Pi 4 +- Fix for older brcm sdio WiFi modules + * Thu Sep 10 2020 Justin M. Forbes - Fix CVE-2020-25211 (rhbz 1877571 1877572) diff --git a/mmc-sdhci-iproc-Enable-eMMC-DDR-3.3V-support-for-bcm2711.patch b/mmc-sdhci-iproc-Enable-eMMC-DDR-3.3V-support-for-bcm2711.patch new file mode 100644 index 000000000..6f5cf820b --- /dev/null +++ b/mmc-sdhci-iproc-Enable-eMMC-DDR-3.3V-support-for-bcm2711.patch @@ -0,0 +1,98 @@ +From patchwork Fri Aug 28 21:47:14 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Stefan Wahren +X-Patchwork-Id: 11743769 +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9294E913 + for ; + Fri, 28 Aug 2020 21:48:59 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) + by mail.kernel.org (Postfix) with ESMTP id 83F242078A + for ; + Fri, 28 Aug 2020 21:48:59 +0000 (UTC) +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1726418AbgH1Vs7 (ORCPT + ); + Fri, 28 Aug 2020 17:48:59 -0400 +Received: from mout.kundenserver.de ([217.72.192.73]:41343 "EHLO + mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S1726379AbgH1Vs5 (ORCPT + ); Fri, 28 Aug 2020 17:48:57 -0400 +Received: from localhost.localdomain ([37.4.249.236]) by + mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) + id 1MzQTm-1kXpKC3Jq4-00vObT; Fri, 28 Aug 2020 23:48:40 +0200 +From: Stefan Wahren +To: Adrian Hunter , + Ulf Hansson , + Ray Jui , + Scott Branden +Cc: Florian Fainelli , + Nicolas Saenz Julienne , + Matthias Brugger , + bcm-kernel-feedback-list@broadcom.com, linux-mmc@vger.kernel.org, + linux-arm-kernel@lists.infradead.org, + Stefan Wahren +Subject: [PATCH] mmc: sdhci-iproc: Enable eMMC DDR 3.3V support for bcm2711 +Date: Fri, 28 Aug 2020 23:47:14 +0200 +Message-Id: <1598651234-29826-1-git-send-email-stefan.wahren@i2se.com> +X-Mailer: git-send-email 2.7.4 +X-Provags-ID: V03:K1:kiziRvARXQvcShivifQ3e8jFQc5NDvS/jk5DcBO1+kY24pjuxcW + pNMzHbKjpwEkD+6H3B4dmClTpiU+4kjeXUo3zfO/VqTahci/RQgw2Jjg5ClfAO20vRj4cmp + eqHXUd9TKy5yr6xa9AzDep/tDWw/ZAMYe72C6NEC+QVodXdoe7JDC+duHvIEy7khM7PY+GF + NzqIu6pdSVbj1v16NZ+sA== +X-Spam-Flag: NO +X-UI-Out-Filterresults: notjunk:1;V03:K0:eelQECZEP/o=:AtkwbFez+YK2lUaKrnCAex + dIlTU0COpkkpKB5Qb0bMKrb8/w/SPJ2rMBPQOKwEd9/tUzoKWo+ZbAPQPpEnEcUM5QKbnzw+7 + qB1kFvhlFgAjX6S2VYE4TsPxy/Dk93b1KLbB3TpK4iOUqvcYMDP11kGtwphrPqzjB+yWqwO6y + KgxT+VLe4SNkCYaD9JES6M1Hj770HNy3DMUeor3ZbWVQqJsm02Xd9jnX8ThCwNQM0x9NSolVQ + 25RoD6I8fehNYcceOQKKGQTSKFw5NMv66cwKfnVYhvG9mj1Fix4xF1ssUx+PIaAKz9IPtf88l + ls9Dj7R5z6+Jfpg2yCxV8pPeg1/NewyDH1Bmv2XVIVVZa3o3Ffms2jaDcGuRIJzYvAGzwhj+z + G+spv31CNuWsBbUeimVwPoWruWAapA+EIOp57iNo95TYAamLRoBF+aIc4DiCyoVKiHvWl7mOh + iDs2nI+sgIn+GWEfuSGJNNmNXiOSRr8PyVRuQELwCvbnkr1JmZqzYOdiYlIdE60pjRs0VVnSZ + xYhbUBsbEC/lXnNUb5fF1o3qlK742HPj1nJQ3lQOdh1rcqOG20kRgACUeVAbq1NMG3DNsuHRS + xsYTKTMMWPPeSrsGrGwEWQurcjWiskZ8QvmiCkaJHzyxpEWZfmqH30xnyIVdeVakqbob0ddv6 + VLEnvtryHj/lA4fHtioyBJ4A5CpKR2At7wnlKOICKyaHniUfMlssMuxexvZkbh5Tk/TR7aW7A + krPi5wigbGYz2Pf0BiIjJOix9EDYS3+e2oyn6oFZX2gJcfDBT48tMcVYK3IOk6vnwvvmszY/k + jexjMPuNFqHptYGNN/TyrXxKulWcZQdCYcksDfKHCrY0TIrxu44YkbhUl22nDy4LRXZQU6h +Sender: linux-mmc-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-mmc@vger.kernel.org + +The emmc2 interface on the bcm2711 supports DDR modes for eMMC devices +running at 3.3V. This allows to run eMMC module with 3.3V signaling voltage +at DDR52 mode on the Raspberry Pi 4 using a SD adapter: + + clock: 52000000 Hz + actual clock: 50000000 Hz + vdd: 21 (3.3 ~ 3.4 V) + bus mode: 2 (push-pull) + chip select: 0 (don't care) + power mode: 2 (on) + bus width: 2 (4 bits) + timing spec: 8 (mmc DDR52) + signal voltage: 0 (3.30 V) + driver type: 0 (driver type B) + +Link: https://github.com/raspberrypi/linux/issues/3802 +Signed-off-by: Stefan Wahren +--- + drivers/mmc/host/sdhci-iproc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c +index e2d8dfe..b540aa6 100644 +--- a/drivers/mmc/host/sdhci-iproc.c ++++ b/drivers/mmc/host/sdhci-iproc.c +@@ -283,6 +283,7 @@ static const struct sdhci_pltfm_data sdhci_bcm2711_pltfm_data = { + + static const struct sdhci_iproc_data bcm2711_data = { + .pdata = &sdhci_bcm2711_pltfm_data, ++ .mmc_caps = MMC_CAP_3_3V_DDR, + }; + + static const struct of_device_id sdhci_iproc_of_match[] = { diff --git a/mmc-sdio-Use-mmc_pre_req-mmc_post_req.patch b/mmc-sdio-Use-mmc_pre_req-mmc_post_req.patch new file mode 100644 index 000000000..123e2c6f8 --- /dev/null +++ b/mmc-sdio-Use-mmc_pre_req-mmc_post_req.patch @@ -0,0 +1,156 @@ +From patchwork Thu Sep 3 08:20:07 2020 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Adrian Hunter +X-Patchwork-Id: 11752795 +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C9EBB14E5 + for ; + Thu, 3 Sep 2020 08:20:33 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) + by mail.kernel.org (Postfix) with ESMTP id BC26D2071B + for ; + Thu, 3 Sep 2020 08:20:33 +0000 (UTC) +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1728222AbgICIUc (ORCPT + ); + Thu, 3 Sep 2020 04:20:32 -0400 +Received: from mga05.intel.com ([192.55.52.43]:36764 "EHLO mga05.intel.com" + rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP + id S1726967AbgICIUc (ORCPT ); + Thu, 3 Sep 2020 04:20:32 -0400 +IronPort-SDR: + UAhQwI9nWr5N0Ssk91Enat0eUs15ciWos+Mpf9aZyd9VfUitB9WC+vPWh1uI8SDDj4GleLaAws + HrPm3i/171hQ== +X-IronPort-AV: E=McAfee;i="6000,8403,9732"; a="242356326" +X-IronPort-AV: E=Sophos;i="5.76,385,1592895600"; + d="scan'208";a="242356326" +X-Amp-Result: SKIPPED(no attachment in message) +X-Amp-File-Uploaded: False +Received: from fmsmga002.fm.intel.com ([10.253.24.26]) + by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; + 03 Sep 2020 01:20:31 -0700 +IronPort-SDR: + us9vTGT33QbxjZoviJb7le3HTC8FOUlIec36VMhX5tXlhCcvcPW9B/SKFJcwEJiMvCa3zvNnDf + 7Vbl3UaoRlmQ== +X-ExtLoop1: 1 +X-IronPort-AV: E=Sophos;i="5.76,385,1592895600"; + d="scan'208";a="334396201" +Received: from slisovsk-lenovo-ideapad-720s-13ikb.fi.intel.com (HELO + ahunter-Desktop.fi.intel.com) ([10.237.72.190]) + by fmsmga002.fm.intel.com with ESMTP; 03 Sep 2020 01:20:29 -0700 +From: Adrian Hunter +To: Ulf Hansson +Cc: linux-mmc , + =?utf-8?q?Pali_Roh=C3=A1r?= , + Haibo Chen , Yue Hu , + Douglas Anderson , Dmitry Osipenko +Subject: [PATCH] mmc: sdio: Use mmc_pre_req() / mmc_post_req() +Date: Thu, 3 Sep 2020 11:20:07 +0300 +Message-Id: <20200903082007.18715-1-adrian.hunter@intel.com> +X-Mailer: git-send-email 2.17.1 +Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, + Business Identity Code: 0357606 - 4, Domiciled in Helsinki +Sender: linux-mmc-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-mmc@vger.kernel.org + +SDHCI changed from using a tasklet to finish requests, to using an IRQ +thread i.e. commit c07a48c2651965 ("mmc: sdhci: Remove finish_tasklet"). +Because this increased the latency to complete requests, a preparatory +change was made to complete the request from the IRQ handler if +possible i.e. commit 19d2f695f4e827 ("mmc: sdhci: Call mmc_request_done() +from IRQ handler if possible"). That alleviated the situation for MMC +block devices because the MMC block driver makes use of mmc_pre_req() +and mmc_post_req() so that successful requests are completed in the IRQ +handler and any DMA unmapping is handled separately in mmc_post_req(). +However SDIO was still affected, and an example has been reported with +up to 20% degradation in performance. + +Looking at SDIO I/O helper functions, sdio_io_rw_ext_helper() appeared +to be a possible candidate for making use of asynchronous requests +within its I/O loops, but analysis revealed that these loops almost +never iterate more than once, so the complexity of the change would not +be warrented. + +Instead, mmc_pre_req() and mmc_post_req() are added before and after I/O +submission (mmc_wait_for_req) in mmc_io_rw_extended(). This still has +the potential benefit of reducing the duration of interrupt handlers, as +well as addressing the latency issue for SDHCI. It also seems a more +reasonable solution than forcing drivers to do everything in the IRQ +handler. + +Reported-by: Dmitry Osipenko +Fixes: c07a48c2651965 ("mmc: sdhci: Remove finish_tasklet") +Signed-off-by: Adrian Hunter +Tested-by: Dmitry Osipenko +--- + drivers/mmc/core/sdio_ops.c | 39 +++++++++++++++++++++---------------- + 1 file changed, 22 insertions(+), 17 deletions(-) + +diff --git a/drivers/mmc/core/sdio_ops.c b/drivers/mmc/core/sdio_ops.c +index 93d346c01110..4c229dd2b6e5 100644 +--- a/drivers/mmc/core/sdio_ops.c ++++ b/drivers/mmc/core/sdio_ops.c +@@ -121,6 +121,7 @@ int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn, + struct sg_table sgtable; + unsigned int nents, left_size, i; + unsigned int seg_size = card->host->max_seg_size; ++ int err; + + WARN_ON(blksz == 0); + +@@ -170,28 +171,32 @@ int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn, + + mmc_set_data_timeout(&data, card); + +- mmc_wait_for_req(card->host, &mrq); ++ mmc_pre_req(card->host, &mrq); + +- if (nents > 1) +- sg_free_table(&sgtable); ++ mmc_wait_for_req(card->host, &mrq); + + if (cmd.error) +- return cmd.error; +- if (data.error) +- return data.error; +- +- if (mmc_host_is_spi(card->host)) { ++ err = cmd.error; ++ else if (data.error) ++ err = data.error; ++ else if (mmc_host_is_spi(card->host)) + /* host driver already reported errors */ +- } else { +- if (cmd.resp[0] & R5_ERROR) +- return -EIO; +- if (cmd.resp[0] & R5_FUNCTION_NUMBER) +- return -EINVAL; +- if (cmd.resp[0] & R5_OUT_OF_RANGE) +- return -ERANGE; +- } ++ err = 0; ++ else if (cmd.resp[0] & R5_ERROR) ++ err = -EIO; ++ else if (cmd.resp[0] & R5_FUNCTION_NUMBER) ++ err = -EINVAL; ++ else if (cmd.resp[0] & R5_OUT_OF_RANGE) ++ err = -ERANGE; ++ else ++ err = 0; + +- return 0; ++ mmc_post_req(card->host, &mrq, err); ++ ++ if (nents > 1) ++ sg_free_table(&sgtable); ++ ++ return err; + } + + int sdio_reset(struct mmc_host *host) -- cgit