From patchwork Tue Jul 16 19:04:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramon Fried X-Patchwork-Id: 1132907 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="hvYHF0BV"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45p9153Zvcz9sDQ for ; Wed, 17 Jul 2019 05:08:57 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2E9B6C21EE8; Tue, 16 Jul 2019 19:06:26 +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, RCVD_IN_MSPIKE_H2, 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 A423FC21E7F; Tue, 16 Jul 2019 19:06:24 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 514EFC21EC2; Tue, 16 Jul 2019 19:05:09 +0000 (UTC) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by lists.denx.de (Postfix) with ESMTPS id BDFEBC21E49 for ; Tue, 16 Jul 2019 19:05:05 +0000 (UTC) Received: by mail-wr1-f67.google.com with SMTP id y4so22135705wrm.2 for ; Tue, 16 Jul 2019 12:05:05 -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=PiJdf2nyJW3gQ3bVSiU2Ca6F+402JomIb31ft8rg27w=; b=hvYHF0BVuKZNdSglmgfybkBkX/rHwHKBQyWJNZmRb8+W/Xh88ZQ/5S+4zomHvV0lPm wPe4C52ibdbYH3ND3X5d1Icp6w5LcAp37HEaVY4QbjaNgkOpiAt0kPr5Y0suvxfOFjj6 6wD+B3pOGNlF+H2QPOAWAZ5FbotClm7twqlibC2ob7oAN/RlXMB3yuFqt6O1jzoKumtV tTpSomfxfAhp2tPGKMWRh0zWZd6hxAi7+49w/dQG1wF26XYzkR/gDu6iPxU4Ag1cheFN BAYx4zWZYJoWAmSDpWrGswgS7SSJX0Qq2ZYR6oCI+Q6YzZmUuEsi0snO45yVrcucflaq SlCQ== 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=PiJdf2nyJW3gQ3bVSiU2Ca6F+402JomIb31ft8rg27w=; b=sMd2SI28HXhBEX7rqHLWYOxDNiHejv+vT+HlDijBt42gZIhmD4NDc7suScD5l9/tV1 ltW6gn1b//vbXyQ18ibIgTk0PRaTYtPJC2y/c2BEQpJnR07fvISzZlUuPsZPTX74EDvy sJ9uxt239Ugrbi+vYTTTVtDoL6TAJu5qmbn5F3S5SA3ZNbdV0BDkqOG9I4TT2ncc2FXT YVuYzVtCmkQGFOR2d333gzX+/UNS3m7NWJqAo9pjEjkC89j8ZRWN3Brb763XTY/YfRl9 vqZ99HCf2bAAzBRU0Uaz801wdfiY5mnSGe1D3kZBIaY+yN9ZfK9D98byV8GQ8YFVDwDd pouw== X-Gm-Message-State: APjAAAW1bCSyXdk8xxNpfwkm5mGq9U0eYCDsjKfSzBD9vDkGBe5cBuJP LUpxr80X0mioCRwzmxFja/+dYGkdc2o= X-Google-Smtp-Source: APXvYqzrguY2zshe66fPA+2lww+z4g8lTw/c3eTnQvcHrSflI+Xd0qR+9syTUqWDo3yuEzXHY2KstQ== X-Received: by 2002:adf:dc51:: with SMTP id m17mr12022095wrj.256.1563303905188; Tue, 16 Jul 2019 12:05:05 -0700 (PDT) Received: from localhost.localdomain ([141.226.31.91]) by smtp.gmail.com with ESMTPSA id t1sm30608347wra.74.2019.07.16.12.05.02 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 16 Jul 2019 12:05:04 -0700 (PDT) From: Ramon Fried To: u-boot@lists.denx.de, joe.hershberger@ni.com Date: Tue, 16 Jul 2019 22:04:36 +0300 Message-Id: <20190716190436.21251-6-rfried.dev@gmail.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190716190436.21251-2-rfried.dev@gmail.com> References: <20190716190436.21251-2-rfried.dev@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [PATCH v2 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 --- v2: nothing. drivers/net/macb.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/net/macb.c b/drivers/net/macb.c index dc6aa6deda..035109dc43 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 @@ -697,6 +698,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 @@ -750,6 +776,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);