Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp72188ybt; Thu, 9 Jul 2020 15:49:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz6yNr3ZF9vjeHXhCB55m8QbNgJAmhMyIpC7z6MMdVAZZZwdHls9mqr4G6uKe+Jp8PD+2tY X-Received: by 2002:a50:d0dc:: with SMTP id g28mr72139097edf.169.1594334956642; Thu, 09 Jul 2020 15:49:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594334956; cv=none; d=google.com; s=arc-20160816; b=lqvtzlVHOND5vb2ORcSBdFOljPBv2SMrabGkMGxgdD46vcNSUJeC0Oqu3CVqBRt0I+ SQ6d34a9sviKElgTa3BDCDJmP1jYUJVMBeQK4zcyI60ffQtbdz6ETQHULzKLwrC8ewcg uqtVXIgTD2AmHoAbdRUezMbmwVbVrZVuhOnwxb4GvduyZj5qNKW4NMn1iinOnWKQXPWa fzND3VXsH9brv//yC8AkWs6i+4TMNxorxc02UMhdbsqzwwGCqIq6a03gsj4Ogvu7cKSD M72DburPqEf7/E700skkRA3CadcwDiyeC6xDQ9glHk39bV3NcJLTB7nOIErsYA/rDdxa GkQg== 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=tJgqYrBLwIauc9EY4TZxrtVTUBoxqr+6hy7JJ2RhY6I=; b=TKpKjFnnk15uHIJQ0prv/FwFBucWTZJiC0t8Bjv5wBByOlQT9WL8ePA5/N45IbWuqB dqc1zR/n5nUpQABQTX51tcwQQ065ZHT6FQDHFZqoXMhULKyc/5Ldg6WhqvXw+ylMja2A nE/PdXBkC8+t3sL6Pfw94ezGnhRBCeUzPVyKDmwaRlJWdz1pG3bcbYM7R5NI/jiikoOR fdfmr7kn1WKamXnEpatAWOdAd6u/H/51E/zB2HDlwH6VDIjoyt4txUpYRK6TRm1TIFuM fBT7UzcIc4/JOGNbQwGxyJkFuSGNDWCDuFmIh07tn9trzrIYigQ8H7xlpQQsfcOUFVvY QO9A== 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 h23si2817740ejd.485.2020.07.09.15.48.53; Thu, 09 Jul 2020 15:49:16 -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 S1727919AbgGIWq4 (ORCPT + 99 others); Thu, 9 Jul 2020 18:46:56 -0400 Received: from mail.baikalelectronics.com ([87.245.175.226]:48126 "EHLO mail.baikalelectronics.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727047AbgGIWqR (ORCPT ); Thu, 9 Jul 2020 18:46:17 -0400 Received: from localhost (unknown [127.0.0.1]) by mail.baikalelectronics.ru (Postfix) with ESMTP id 9B2D38030833; Thu, 9 Jul 2020 22:46:11 +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 5L-29FhGSQ6Q; Fri, 10 Jul 2020 01:46:10 +0300 (MSK) From: Serge Semin To: Vinod Koul , Viresh Kumar , Dan Williams CC: Serge Semin , Serge Semin , Andy Shevchenko , Alexey Malahov , Thomas Bogendoerfer , Arnd Bergmann , Rob Herring , , , , Subject: [PATCH v7 03/11] dmaengine: Introduce min burst length capability Date: Fri, 10 Jul 2020 01:45:42 +0300 Message-ID: <20200709224550.15539-4-Sergey.Semin@baikalelectronics.ru> In-Reply-To: <20200709224550.15539-1-Sergey.Semin@baikalelectronics.ru> References: <20200709224550.15539-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 Some hardware aside from default 0/1 may have greater minimum burst transactions length constraints. Here we introduce the DMA device and slave capability, which if required can be initialized by the DMA engine driver with the device-specific value. Signed-off-by: Serge Semin Reviewed-by: Andy Shevchenko Cc: Alexey Malahov Cc: Thomas Bogendoerfer Cc: Arnd Bergmann Cc: Rob Herring Cc: linux-mips@vger.kernel.org Cc: devicetree@vger.kernel.org --- Changelog v3: - This is a new patch created as a result of the discussion with Vinud and Andy in the framework of DW DMA burst and LLP capabilities. --- drivers/dma/dmaengine.c | 1 + include/linux/dmaengine.h | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index d31076d9ef25..b332ffe52780 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c @@ -590,6 +590,7 @@ int dma_get_slave_caps(struct dma_chan *chan, struct dma_slave_caps *caps) caps->src_addr_widths = device->src_addr_widths; caps->dst_addr_widths = device->dst_addr_widths; caps->directions = device->directions; + caps->min_burst = device->min_burst; caps->max_burst = device->max_burst; caps->residue_granularity = device->residue_granularity; caps->descriptor_reuse = device->descriptor_reuse; diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index e1c03339918f..0c7403b27133 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -465,6 +465,7 @@ enum dma_residue_granularity { * Since the enum dma_transfer_direction is not defined as bit flag for * each type, the dma controller should set BIT() and same * should be checked by controller as well + * @min_burst: min burst capability per-transfer * @max_burst: max burst capability per-transfer * @cmd_pause: true, if pause is supported (i.e. for reading residue or * for resume later) @@ -478,6 +479,7 @@ struct dma_slave_caps { u32 src_addr_widths; u32 dst_addr_widths; u32 directions; + u32 min_burst; u32 max_burst; bool cmd_pause; bool cmd_resume; @@ -769,6 +771,7 @@ struct dma_filter { * Since the enum dma_transfer_direction is not defined as bit flag for * each type, the dma controller should set BIT() and same * should be checked by controller as well + * @min_burst: min burst capability per-transfer * @max_burst: max burst capability per-transfer * @residue_granularity: granularity of the transfer residue reported * by tx_status @@ -839,6 +842,7 @@ struct dma_device { u32 src_addr_widths; u32 dst_addr_widths; u32 directions; + u32 min_burst; u32 max_burst; bool descriptor_reuse; enum dma_residue_granularity residue_granularity; -- 2.26.2