Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp1544350ybj; Fri, 8 May 2020 03:57:35 -0700 (PDT) X-Google-Smtp-Source: APiQypJVluVpzT0BiNhQ7xK9yHNwu1FEq9SuMeTicgD8qqv/MtQvm1+rE6AyqSYvnuKoVLSEgxTd X-Received: by 2002:a50:eb0a:: with SMTP id y10mr1629696edp.312.1588935455801; Fri, 08 May 2020 03:57:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588935455; cv=none; d=google.com; s=arc-20160816; b=R0VUnD4SCjPIRrl4ZuOYuT+WQi72pASUa7I11G9U1uw2Dai3J8sF45xy3m4rj/6XOE KD7hfutASH31RTHszjXC0l3IO8pfO2mTv2mOawzNGZS5ZvAG9Fl9SrHF+auN/MpfPRYU M5O7pU08pX+o+4thcERDe8BKk3rHg/1U98PGX16cbpWprpu6iz02GpcktUc+4o4bk2sx +f4dJr3Zg2WCUrmID0g/XdPs4sFqWiuAEJ5elWj05IEqM7zGWixKGxpJdp3xuVNmsBub 39+UACovXkTjnHwJjF8LCEsRXi9dr1vVSxdrrzu386feEMdIgiE6chfg3XYKKkTZqwd1 ZV8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=vQIjutnNt99DxGPodHl78TDjWQf7KU771vg0KZBNs+M=; b=ApX0QTHt8eK4Q1aw+Mv/bDLm1VTADwfESp8DvdRrztoyCxAc11MN1qv4m433ijfjHE cQFoBm3lZIXiEKSErqJYxyTN7J4Dqa1T2aSIAE5QQEOcExSdxTWe9YEkueR30fczVbOm PutXL1cCKEuRFotWFyuaCEZ2GEAxBJ+kLLSvt7qqmGEjiUnTwuA6cLrizgtRfPIjMK3i 0LkQ2Tnf12ezaDh5KH3Voq1FunuQQy59a/5OHCwO6Z9YsnBEsbHSb+abFDBV4nmSs6TI 44ucVv1m55h9DdyAGS8LwYppLPHF5Isqgy77BKCvqVZWkrsnHoCE1H/rciKP9donRrSJ NSNQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d23si691034ejt.267.2020.05.08.03.57.00; Fri, 08 May 2020 03:57:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727938AbgEHKxr (ORCPT + 99 others); Fri, 8 May 2020 06:53:47 -0400 Received: from mail.baikalelectronics.com ([87.245.175.226]:41862 "EHLO mail.baikalelectronics.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726091AbgEHKxq (ORCPT ); Fri, 8 May 2020 06:53:46 -0400 Received: from localhost (unknown [127.0.0.1]) by mail.baikalelectronics.ru (Postfix) with ESMTP id C9DE98030779; Fri, 8 May 2020 10:53:37 +0000 (UTC) X-Virus-Scanned: amavisd-new at baikalelectronics.ru Received: from mail.baikalelectronics.ru ([127.0.0.1]) by localhost (mail.baikalelectronics.ru [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id k_ka0vsYUEeH; Fri, 8 May 2020 13:53:37 +0300 (MSK) From: Serge Semin To: Vinod Koul , Viresh Kumar , Andy Shevchenko , Dan Williams CC: Serge Semin , Serge Semin , Alexey Malahov , Thomas Bogendoerfer , Paul Burton , Ralf Baechle , Arnd Bergmann , Rob Herring , , , , Subject: [PATCH v2 6/6] dmaengine: dw: Take HC_LLP flag into account for noLLP auto-config Date: Fri, 8 May 2020 13:53:04 +0300 Message-ID: <20200508105304.14065-7-Sergey.Semin@baikalelectronics.ru> In-Reply-To: <20200508105304.14065-1-Sergey.Semin@baikalelectronics.ru> References: <20200306131048.ADBE18030797@mail.baikalelectronics.ru> <20200508105304.14065-1-Sergey.Semin@baikalelectronics.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-ClientProxiedBy: MAIL.baikal.int (192.168.51.25) To mail (192.168.51.25) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Full multi-block transfers functionality is enabled in DW DMA controller only if CHx_MULTI_BLK_EN is set. But LLP-based transfers can be executed only if hardcode channel x LLP register feature isn't enabled, which can be switched on at the IP core synthesis for optimization. If it's enabled then the LLP register is hardcoded to zero, so the blocks chaining based on the LLPs is unsupported. Signed-off-by: Serge Semin Cc: Alexey Malahov Cc: Thomas Bogendoerfer Cc: Paul Burton Cc: Ralf Baechle Cc: Arnd Bergmann Cc: Andy Shevchenko Cc: Dan Williams Cc: Rob Herring Cc: linux-mips@vger.kernel.org Cc: devicetree@vger.kernel.org --- Changelog v2: - Rearrange SoBs. - Add comment about why hardware accelerated LLP list support depends on both MBLK_EN and HC_LLP configs setting. - Use explicit bits state comparison operator. --- drivers/dma/dw/core.c | 11 ++++++++++- drivers/dma/dw/regs.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c index 5b76ccc857fd..3179d45df662 100644 --- a/drivers/dma/dw/core.c +++ b/drivers/dma/dw/core.c @@ -1180,8 +1180,17 @@ int do_dma_probe(struct dw_dma_chip *chip) */ dwc->block_size = (4 << ((pdata->block_size >> 4 * i) & 0xf)) - 1; + + /* + * According to the DW DMA databook the true scatter- + * gether LLPs aren't available if either multi-block + * config is disabled (CHx_MULTI_BLK_EN == 0) or the + * LLP register is hard-coded to zeros + * (CHx_HC_LLP == 1). + */ dwc->nollp = - (dwc_params >> DWC_PARAMS_MBLK_EN & 0x1) == 0; + (dwc_params >> DWC_PARAMS_MBLK_EN & 0x1) == 0 || + (dwc_params >> DWC_PARAMS_HC_LLP & 0x1) == 1; dwc->max_burst = (0x4 << (dwc_params >> DWC_PARAMS_MSIZE & 0x7)); } else { diff --git a/drivers/dma/dw/regs.h b/drivers/dma/dw/regs.h index f581d4809b71..a8af19d0eabd 100644 --- a/drivers/dma/dw/regs.h +++ b/drivers/dma/dw/regs.h @@ -126,6 +126,7 @@ struct dw_dma_regs { /* Bitfields in DWC_PARAMS */ #define DWC_PARAMS_MSIZE 16 /* max group transaction size */ +#define DWC_PARAMS_HC_LLP 13 /* set LLP register to zero */ #define DWC_PARAMS_MBLK_EN 11 /* multi block transfer */ /* bursts size */ -- 2.25.1