Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp119571pxb; Thu, 21 Jan 2021 02:58:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJzFfZiVzuJAfec6k3DheS/XqV34P2Ce3e93D1jhK5m9ZFQb0/Bq1tPUBN8ItpzMzwNQB1q7 X-Received: by 2002:a17:906:2755:: with SMTP id a21mr8912799ejd.374.1611226721941; Thu, 21 Jan 2021 02:58:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611226721; cv=none; d=google.com; s=arc-20160816; b=MNs8AOMU/Vb+rIPvfuUhF9ffPFpFzJL61o01xypHSt+OKe4wNVwOFoyzz14XasbHvW O7Leqpf+Q76RS8nYhMK4nMWl91oV+wSEBalcLc6FFK9nDMNFj+rTefXf96PJF1RQwkft J3NBbQfw1Msi8bS0/9nqXZvbUrwVam3Hb2R8W2dM8ate21N+2cGgPN8uG9MXpfClCFsi jtIf2e9Fq8eHvn6Voigqo6NZS17hhqqlCuhH7V/1nOTnhomWjWeeyMubrTO3ZpVFa8lL XN/otFUmTWsDyZI1ADKhR7WPxBqjmR1KYvGcqw+QSbnldEI3hC1S3RAHYxxC7PzuuQ+G AH3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:ironport-sdr:ironport-sdr; bh=pZriA9LGquLGMqda2UEIJAwI5GiNP5FOZYa0OyGKLcA=; b=wSaKMhP0Jj2LkyJ1QOG4N+Q3m0oCBnSRnW8IQcbrvxh/zEJSE05BYo7M1Dfbjf0New t6pXTY2sAlvuH/1z1ZvE9N8NiOrKYw2HMI78doezlD4TaRgpz89Pp34iTmPC0hiQ8NbV ryQyG0pwLqFD0EU9QoNuoldOSRarFQUKhiOt2XoX14ohJ9PkgdgxOrwa16Hjwxxr4bQF cfN5oSnWWVNhRDWizTjTMdjOATKYnIVAVr3tVbrerjmCkZ+sCZM7+JpEPkLoX25UtFXL rb9BXbjkBerJkWyJmmONdtikIwTfNrgTMQlpiNGQOqBHcBPjU2hCnH5XO4aqpxyppGk1 cvmg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f12si2037914edx.584.2021.01.21.02.58.18; Thu, 21 Jan 2021 02:58:41 -0800 (PST) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729148AbhAUKxs (ORCPT + 99 others); Thu, 21 Jan 2021 05:53:48 -0500 Received: from mga06.intel.com ([134.134.136.31]:36491 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729755AbhAUKqR (ORCPT ); Thu, 21 Jan 2021 05:46:17 -0500 IronPort-SDR: 4lLgXkUo2IxDfwIRwqx9VsUC+z8NKSJHexNBwe8oZ95yk7CrGJDpc8gXRuZM0vwd2p82qGg6GI WdZM+UiS8a8Q== X-IronPort-AV: E=McAfee;i="6000,8403,9870"; a="240790267" X-IronPort-AV: E=Sophos;i="5.79,363,1602572400"; d="scan'208";a="240790267" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2021 02:45:05 -0800 IronPort-SDR: zdAH+/YUYBXCpOzLeXSi2nutI6nZ9FUWMNnFKvviTLn3Qyhq7/V8vV/1vXQcFTAlajDPiT2baD wxJj6niFNV8w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,363,1602572400"; d="scan'208";a="356417528" Received: from jsia-hp-z620-workstation.png.intel.com ([10.221.118.135]) by fmsmga008.fm.intel.com with ESMTP; 21 Jan 2021 02:45:02 -0800 From: Sia Jee Heng To: vkoul@kernel.org, Eugeniy.Paltsev@synopsys.com, robh+dt@kernel.org Cc: andriy.shevchenko@linux.intel.com, jee.heng.sia@intel.com, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v11 05/16] dmaengine: dw-axi-dmac: Add device_config operation Date: Thu, 21 Jan 2021 18:27:15 +0800 Message-Id: <20210121102726.22805-6-jee.heng.sia@intel.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20210121102726.22805-1-jee.heng.sia@intel.com> References: <20210121102726.22805-1-jee.heng.sia@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add device_config() callback function so that the device address can be passed to the dma driver. DMA clients use this interface to pass in the device address to the AxiDMA. Without this interface, data transfer between device to memory and memory to device would failed. Signed-off-by: Sia Jee Heng Reviewed-by: Andy Shevchenko Reviewed-by: Eugeniy Paltsev Tested-by: Eugeniy Paltsev --- drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 11 +++++++++++ drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 1 + 2 files changed, 12 insertions(+) diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c index 241ab7a24e2a..eaa7c4c404ca 100644 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c @@ -559,6 +559,16 @@ dma_chan_prep_dma_memcpy(struct dma_chan *dchan, dma_addr_t dst_adr, return NULL; } +static int dw_axi_dma_chan_slave_config(struct dma_chan *dchan, + struct dma_slave_config *config) +{ + struct axi_dma_chan *chan = dchan_to_axi_dma_chan(dchan); + + memcpy(&chan->config, config, sizeof(*config)); + + return 0; +} + static void axi_chan_dump_lli(struct axi_dma_chan *chan, struct axi_dma_hw_desc *desc) { @@ -948,6 +958,7 @@ static int dw_probe(struct platform_device *pdev) dw->dma.device_prep_dma_memcpy = dma_chan_prep_dma_memcpy; dw->dma.device_synchronize = dw_axi_dma_synchronize; + dw->dma.device_config = dw_axi_dma_chan_slave_config; platform_set_drvdata(pdev, chip); diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h index f886b2bb75de..a75b921d6b1a 100644 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h @@ -43,6 +43,7 @@ struct axi_dma_chan { struct virt_dma_chan vc; struct axi_dma_desc *desc; + struct dma_slave_config config; /* these other elements are all protected by vc.lock */ bool is_paused; }; -- 2.18.0