From patchwork Tue Jun 11 15:19:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramon Fried X-Patchwork-Id: 1114024 X-Patchwork-Delegate: joe.hershberger@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="gwvhLT2L"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45NZ7N1XQgz9s3l for ; Wed, 12 Jun 2019 01:44:32 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id BEE98C2220C; Tue, 11 Jun 2019 15:41:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 59107C221CA; Tue, 11 Jun 2019 15:41:05 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 2841CC22219; Tue, 11 Jun 2019 15:19:55 +0000 (UTC) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by lists.denx.de (Postfix) with ESMTPS id 77093C22102 for ; Tue, 11 Jun 2019 15:19:52 +0000 (UTC) Received: by mail-wm1-f66.google.com with SMTP id a15so3386307wmj.5 for ; Tue, 11 Jun 2019 08:19:52 -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=rQwm4UW+QOFpdleesKeI2PTfPEILmpO0EUh5/MB0YeU=; b=gwvhLT2L7JAGDRdsrakx4o8ZxLA3DBzTHQnpbuEzUafvV3hChqylvRSVPIK3ptuwRz v45cC9YHDzhZJvmZ27I++QJMeokLibDm+aZAPfxMszDrfk8vYjM/oCGYQd+T2hET4EZU Nzf484abh/DWt08Q1oAibCf2g2/o7jiMZGFCEXmazc3wyClzGb3LM31UUZo9v7rqWq7H CChixWi7Y8iaAmhfhXQMUpf6u57RdTZdg2ubGG1ptBM8a4NnAON/JB2eT4zgcABYiYJk 7/SFcg4wwWxyou48lDWj4cU4Be3gPQE1NFvqHXaN3YBcXwahQ+jgORG41Zb3A5dYlR68 LwFQ== 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=rQwm4UW+QOFpdleesKeI2PTfPEILmpO0EUh5/MB0YeU=; b=P5S8vtmMiDEUASvxfGg46MFwkQqP9T7xZ6SbhbnUXcDWnUo4Dixk8JzDPCEy+HVKhJ cPNQzL/l6fLIi6aVH1QBf8iJ34EV7SQwmoitLALPNxrolT4LdnfVr5VvVdGs+wGPHser BY2tLjSXwTeLZYyWuuslIGMzh/4OVyKADAbG6bKuzDmja/yEXmtKrhffcyBIcHYOcGnT 8j3pYv+Wev/j1/OaRrzWtZtlwToL1M4wMH5pfMPze8bi/ZUtjOV9l7GxBWe9V3Bc9owQ fmQS7R3XLdMDECXcD5ZRK7GcUMsTcNxX6UDBhByxxZz+sZwUlYU5cp5ocAF34FmuNoEr lcag== X-Gm-Message-State: APjAAAV2PeSxNuTj+EvHWOwozHo9PJ83oCb61137fi9Nw6tKnAT+3KB6 /eOOkylbx8Enmy+gBBOYGHbr6ihIGIU= X-Google-Smtp-Source: APXvYqzyDk+CBimF8Zwi+9As2qdVByd+H/ttH9202OficmrGdevXUAg6V/cZZ52OAWWTUzUY5W6tAw== X-Received: by 2002:a1c:151:: with SMTP id 78mr18832955wmb.58.1560266391982; Tue, 11 Jun 2019 08:19:51 -0700 (PDT) Received: from localhost.localdomain ([141.226.31.91]) by smtp.gmail.com with ESMTPSA id q20sm38564360wra.36.2019.06.11.08.19.51 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 11 Jun 2019 08:19:51 -0700 (PDT) From: Ramon Fried To: u-boot@lists.denx.de Date: Tue, 11 Jun 2019 18:19:30 +0300 Message-Id: <20190611151930.15852-6-rfried.dev@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190611151930.15852-1-rfried.dev@gmail.com> References: <20190611151930.15852-1-rfried.dev@gmail.com> MIME-Version: 1.0 Cc: Joe Hershberger Subject: [U-Boot] [PATCH 6/6] net: macb: apply sane DMA configuration X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" DMA configuration was heavily dependent on the HW defaults, add function to properly set the required fields, including the new dma_burst_length. Signed-off-by: Ramon Fried Reviewed-by: Anup Patel Tested-by: Anup Patel Acked-by: Joe Hershberger --- drivers/net/macb.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/net/macb.c b/drivers/net/macb.c index fb42172520..c072f99d8f 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c @@ -47,6 +47,7 @@ DECLARE_GLOBAL_DATA_PTR; #define MACB_RX_BUFFER_SIZE 4096 #define MACB_RX_RING_SIZE (MACB_RX_BUFFER_SIZE / 128) +#define RX_BUFFER_MULTIPLE 64 #define MACB_TX_RING_SIZE 16 #define MACB_TX_TIMEOUT 1000 #define MACB_AUTONEG_TIMEOUT 5000000 @@ -695,6 +696,31 @@ static int gmac_init_multi_queues(struct macb_device *macb) return 0; } +static void gmac_configure_dma(struct macb_device *macb) +{ + u32 buffer_size; + u32 dmacfg; + + buffer_size = 128 / RX_BUFFER_MULTIPLE; + dmacfg = gem_readl(macb, DMACFG) & ~GEM_BF(RXBS, -1L); + dmacfg |= GEM_BF(RXBS, buffer_size); + + if (macb->dma_burst_length) + dmacfg = GEM_BFINS(FBLDO, macb->dma_burst_length, dmacfg); + + dmacfg |= GEM_BIT(TXPBMS) | GEM_BF(RXBMS, -1L); + dmacfg &= ~GEM_BIT(ENDIA_PKT); + +#ifdef CONFIG_SYS_LITTLE_ENDIAN + dmacfg &= ~GEM_BIT(ENDIA_DESC); +#else + dmacfg |= GEM_BIT(ENDIA_DESC); /* CPU in big endian */ +#endif + + dmacfg &= ~GEM_BIT(ADDR64); + gem_writel(macb, DMACFG, dmacfg); +} + #ifdef CONFIG_DM_ETH static int _macb_init(struct udevice *dev, const char *name) #else @@ -748,6 +774,8 @@ static int _macb_init(struct macb_device *macb, const char *name) macb_writel(macb, TBQP, macb->tx_ring_dma); if (macb_is_gem(macb)) { + /* Initialize DMA properties */ + gmac_configure_dma(macb); /* Check the multi queue and initialize the queue for tx */ gmac_init_multi_queues(macb);