From patchwork Thu Feb 23 17:24:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 731629 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vTh3z1CN6z9s7p for ; Fri, 24 Feb 2017 04:26:39 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Y2ZP+XR5"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751816AbdBWR0J (ORCPT ); Thu, 23 Feb 2017 12:26:09 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:34390 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751188AbdBWRZA (ORCPT ); Thu, 23 Feb 2017 12:25:00 -0500 Received: by mail-wm0-f65.google.com with SMTP id m70so1004811wma.1; Thu, 23 Feb 2017 09:24:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=S0ypWU3S/MOG7q3Fd1QH4DxGAOX4W8vxtYPHpZFzUKA=; b=Y2ZP+XR5IsOfcCuRKcIGU2JFh2+nAQa0iqsx+POSbACEzfrobLet4n8m4t58u6sKKh UadjeWsF4k5f9JJZeR1j3mHyx6eSs1dHVueHjvt2U982eWrANmUq8NarKsqn+3C0zJwy uXyDa8L5aEsCKLWMJOhBJDJl0zl/JzzMPMpFnbTEPrhEYCN5RqjRcP4CVoo3AJmUgR4a J2lS3Fi+zla68IFoH7GDzAuvfxFlQq1sShyTgUpDe21lNJwNZy4q06KRZiP3CkZr3PM+ MMjik5JmSXbYMyEILxcAuM1zF34NV1KTl20gDNA3SFhaZtGhWGKz1wPSKBrjcYwPIIp/ hLSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=S0ypWU3S/MOG7q3Fd1QH4DxGAOX4W8vxtYPHpZFzUKA=; b=aCl+sCyQKAazNWa5yO6RubnYwRMYjkkGZ3QiAMxpQBJcFVzlG3KmwbRTG95LbWZIVX wYd6xSR6UW8xVpjaCvSddfIswQpWPM3ftjAMyPkU+AnEG8UH7IN9s5TfIeaXB8rYO0ns pRx/9WSd8uFtgYITEijlighhUj/13BTZM1CddAgOlvE59boPUKPbWM8RpOjiO33hpMRI TYETWR37Wu8uv4Mk4jtHNVVFxImRoh++G5YaDl4IMveiRXAoLrP0OdoVkxbqHV956kww z7wz3S1STOx5urFTaOLu9ZShsJ3n0wZqFv9JbU0dZ4GkBNhkwEkSRTGb/gqxx0p7xFjX E4Wg== X-Gm-Message-State: AMke39maRKLNWGB4SKj71g1x9CdqcKJ/Ypvyw8qnDWKW1znfcLCGD/jKoXrqXEQ8j62lrQ== X-Received: by 10.28.158.213 with SMTP id h204mr965585wme.0.1487870687862; Thu, 23 Feb 2017 09:24:47 -0800 (PST) Received: from localhost (port-435.pppoe.wtnet.de. [84.46.1.180]) by smtp.gmail.com with ESMTPSA id d75sm7162503wmd.25.2017.02.23.09.24.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 23 Feb 2017 09:24:46 -0800 (PST) From: Thierry Reding To: "David S . Miller" Cc: Giuseppe Cavallaro , Alexandre Torgue , Rob Herring , Mark Rutland , Joao Pinto , Alexandre Courbot , Jon Hunter , netdev@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/7] net: stmmac: Parse FIFO sizes from feature registers Date: Thu, 23 Feb 2017 18:24:35 +0100 Message-Id: <20170223172438.14770-5-thierry.reding@gmail.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20170223172438.14770-1-thierry.reding@gmail.com> References: <20170223172438.14770-1-thierry.reding@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Thierry Reding New version of this core encode the FIFO sizes in one of the feature registers. Use these sizes as default, but still allow device tree to override them for backwards compatibility. Signed-off-by: Thierry Reding Reviewed-by: Mikko Perttunen --- drivers/net/ethernet/stmicro/stmmac/common.h | 3 +++ drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c | 2 ++ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 +++ 3 files changed, 8 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h index 144fe84e8a53..6ac653845d82 100644 --- a/drivers/net/ethernet/stmicro/stmmac/common.h +++ b/drivers/net/ethernet/stmicro/stmmac/common.h @@ -324,6 +324,9 @@ struct dma_features { unsigned int number_tx_queues; /* Alternate (enhanced) DESC mode */ unsigned int enh_desc; + /* TX and RX FIFO sizes */ + unsigned int tx_fifo_size; + unsigned int rx_fifo_size; }; /* GMAC TX FIFO is 8K, Rx FIFO is 16K */ diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c index 377d1b44d4f2..8d249f3b34c8 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c @@ -296,6 +296,8 @@ static void dwmac4_get_hw_feature(void __iomem *ioaddr, hw_cap = readl(ioaddr + GMAC_HW_FEATURE1); dma_cap->av = (hw_cap & GMAC_HW_FEAT_AVSEL) >> 20; dma_cap->tsoen = (hw_cap & GMAC_HW_TSOEN) >> 18; + dma_cap->tx_fifo_size = 128 << ((hw_cap >> 6) & 0x1f); + dma_cap->rx_fifo_size = 128 << ((hw_cap >> 0) & 0x1f); /* MAC HW feature2 */ hw_cap = readl(ioaddr + GMAC_HW_FEATURE2); /* TX and RX number of channels */ diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index d7387919bdb6..291e34f0ca94 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1281,6 +1281,9 @@ static void stmmac_dma_operation_mode(struct stmmac_priv *priv) { int rxfifosz = priv->plat->rx_fifo_size; + if (rxfifosz == 0) + rxfifosz = priv->dma_cap.rx_fifo_size; + if (priv->plat->force_thresh_dma_mode) priv->hw->dma->dma_mode(priv->ioaddr, tc, tc, rxfifosz); else if (priv->plat->force_sf_dma_mode || priv->plat->tx_coe) {