Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp4485110ybx; Mon, 4 Nov 2019 14:12:20 -0800 (PST) X-Google-Smtp-Source: APXvYqxlg2sSNDmiJcXBJb2nV10JGebpQTiggJg0zcQdJJhZlT7xAFzlOGQyTG54/+6vca54Mbss X-Received: by 2002:a50:9f65:: with SMTP id b92mr32254098edf.63.1572905540208; Mon, 04 Nov 2019 14:12:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572905540; cv=none; d=google.com; s=arc-20160816; b=UY4KbqGSNvc/R5zXKrdCisJK/hGEMOQ5Z/9xO8iwsEqtvEaqLh7aVQfnFjf9nUtsEP w4SHtUWHptn0OZS86eaJoemkzXCw3g/xgiX6hTuoaYTFVIdLGt+raxT6sXy9m+ddfWS1 ZvSd1A9zZ6SBRsq5YsfDF52HK8XGTXPuX4TPR/pVxWEGyMiO5dWK7TBQ4tVWOoOvxm3P OWSWZsNsVgWJbGZqtDjEf2aXyvhO8V/S2zR/cLWJG2KOxi0qf/puMYIsscZ3nExQ728D s94QDk8taucUw65GB22qF9ob20Zz5A8x8AxPxsInBuKF6O26iA87zu4UEuwhMvTYQOYi mkSw== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=HwGh9Vh5I5ECX7anGSk54QnUD5GXRXKUGYjEv7YanL4=; b=xAT4B98Q5Ol+Dkk5xo8U8imHVVB//S+1/SifccXux3WcN8/mwnLSp2vC6uUR+iQ6N0 gKXJtde1TE0U+bKv/uTROFxUn3cPn9z0CflFFENfO3pmgj/OnbcB9PWzB4f4n1F1kWWZ MAjT10CU/NRy3HgO9brFClmqK7lVHr8+JOS1xJCGVMEOrLzbVz5C3uhfVD2vXHMa/O5w l997jYOVQzetWWQSPFFi4JB/vvhgdAcB89GGDmOZwtynqoQ6d3YTHxFS3HmbTVa69S86 Ame/nI2J5vejgA5DrkMl1PXIMKV+PxgdR5q+lSjwTGzoS/raiqqVSE3BI89YGBhy7rNK fkcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="QQ/fWChI"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n8si4880692eja.438.2019.11.04.14.11.56; Mon, 04 Nov 2019 14:12:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="QQ/fWChI"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389761AbfKDWKP (ORCPT + 99 others); Mon, 4 Nov 2019 17:10:15 -0500 Received: from mail.kernel.org ([198.145.29.99]:43364 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390504AbfKDWKL (ORCPT ); Mon, 4 Nov 2019 17:10:11 -0500 Received: from localhost (6.204-14-84.ripe.coltfrance.com [84.14.204.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A57C120650; Mon, 4 Nov 2019 22:10:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572905410; bh=4evb73l0lxzxtEelxA/HONgL9oWxq4l3Vpph6+gsftU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QQ/fWChI7+k20OZ22P9J3YNZPcuLJLcqAFr0UFztVXiShqROkQ/CpZdbOqIkvz3BL nr6XSaFoMPcIonPJA7PHGqJ+W6WAcZIg10g1zuBCbjapb/K2AuXnGu/M+Rkb3l2flY C2KryJQgKOLNUAwhnKSrxBLjITZvoPXRAcZliYP4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sameer Pujar , Jon Hunter , Vinod Koul Subject: [PATCH 5.3 134/163] dmaengine: tegra210-adma: fix transfer failure Date: Mon, 4 Nov 2019 22:45:24 +0100 Message-Id: <20191104212150.048352178@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191104212140.046021995@linuxfoundation.org> References: <20191104212140.046021995@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sameer Pujar commit 9ec691f48b5ef741a48af8932ccaec859c67e8f1 upstream. >From Tegra186 onwards OUTSTANDING_REQUESTS field is added in channel configuration register(bits 7:4) which defines the maximum number of reads from the source and writes to the destination that may be outstanding at any given point of time. This field must be programmed with a value between 1 and 8. A value of 0 will prevent any transfers from happening. Thus added 'has_outstanding_reqs' bool member in chip data structure and is set to false for Tegra210, since the field is not applicable. For Tegra186 it is set to true and channel configuration is updated with maximum outstanding requests. Fixes: 433de642a76c ("dmaengine: tegra210-adma: add support for Tegra186/Tegra194") Cc: stable@vger.kernel.org Signed-off-by: Sameer Pujar Acked-by: Jon Hunter Link: https://lore.kernel.org/r/1568626513-16541-1-git-send-email-spujar@nvidia.com Signed-off-by: Vinod Koul Signed-off-by: Greg Kroah-Hartman --- drivers/dma/tegra210-adma.c | 7 +++++++ 1 file changed, 7 insertions(+) --- a/drivers/dma/tegra210-adma.c +++ b/drivers/dma/tegra210-adma.c @@ -40,6 +40,7 @@ #define ADMA_CH_CONFIG_MAX_BURST_SIZE 16 #define ADMA_CH_CONFIG_WEIGHT_FOR_WRR(val) ((val) & 0xf) #define ADMA_CH_CONFIG_MAX_BUFS 8 +#define TEGRA186_ADMA_CH_CONFIG_OUTSTANDING_REQS(reqs) (reqs << 4) #define ADMA_CH_FIFO_CTRL 0x2c #define TEGRA210_ADMA_CH_FIFO_CTRL_OFLWTHRES(val) (((val) & 0xf) << 24) @@ -85,6 +86,7 @@ struct tegra_adma; * @ch_req_tx_shift: Register offset for AHUB transmit channel select. * @ch_req_rx_shift: Register offset for AHUB receive channel select. * @ch_base_offset: Register offset of DMA channel registers. + * @has_outstanding_reqs: If DMA channel can have outstanding requests. * @ch_fifo_ctrl: Default value for channel FIFO CTRL register. * @ch_req_mask: Mask for Tx or Rx channel select. * @ch_req_max: Maximum number of Tx or Rx channels available. @@ -103,6 +105,7 @@ struct tegra_adma_chip_data { unsigned int ch_req_max; unsigned int ch_reg_size; unsigned int nr_channels; + bool has_outstanding_reqs; }; /* @@ -602,6 +605,8 @@ static int tegra_adma_set_xfer_params(st ADMA_CH_CTRL_FLOWCTRL_EN; ch_regs->config |= cdata->adma_get_burst_config(burst_size); ch_regs->config |= ADMA_CH_CONFIG_WEIGHT_FOR_WRR(1); + if (cdata->has_outstanding_reqs) + ch_regs->config |= TEGRA186_ADMA_CH_CONFIG_OUTSTANDING_REQS(8); ch_regs->fifo_ctrl = cdata->ch_fifo_ctrl; ch_regs->tc = desc->period_len & ADMA_CH_TC_COUNT_MASK; @@ -786,6 +791,7 @@ static const struct tegra_adma_chip_data .ch_req_tx_shift = 28, .ch_req_rx_shift = 24, .ch_base_offset = 0, + .has_outstanding_reqs = false, .ch_fifo_ctrl = TEGRA210_FIFO_CTRL_DEFAULT, .ch_req_mask = 0xf, .ch_req_max = 10, @@ -800,6 +806,7 @@ static const struct tegra_adma_chip_data .ch_req_tx_shift = 27, .ch_req_rx_shift = 22, .ch_base_offset = 0x10000, + .has_outstanding_reqs = true, .ch_fifo_ctrl = TEGRA186_FIFO_CTRL_DEFAULT, .ch_req_mask = 0x1f, .ch_req_max = 20,