From patchwork Fri Jan 4 20:56:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 154795 Delivered-To: patches@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1020894ljp; Fri, 4 Jan 2019 12:56:38 -0800 (PST) X-Received: by 2002:a62:7892:: with SMTP id t140mr53761783pfc.237.1546635398077; Fri, 04 Jan 2019 12:56:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546635398; cv=none; d=google.com; s=arc-20160816; b=E02Edl9Qnd8+TnW5VMHykh270+QQUQN/fmees/cK83yGsR+OzBb+JnoJbPYAKKiCsf S4+77AukUzEgIRvdrCE/vnP18VQS3l+/mT4HUKO/gKMVdUJHz5Mgn89Re6F6Ete43FAl WtacY0HLlIX+mUZBM+Pet+A7SLfIh5fEwiuTD+IhRbzRQgxz7/D+RB36+T1qQUJRQEjH qSk9jesH4w5UpJ/UqPmAExkkdiQBD5ROHRlvsGWCuFVBP+k6nFKOO4Z23rbYfCQCK44J w/wSdObBCu9WV/SqQisrk3GevZT9+r/rxgBdtgFgb3yUKXDyvKTKTXCuqwCx1Sbspeem AE8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7PoOlpFQPsMjakXihA1LLc08Bpkr7q8xCpQ3M2g6csg=; b=T72WfcvILg3013TyPDkf5J970hbZJ4qnaObd80cqTWXRycIwlqxvY4zQSeMDpIdW8P W65U8xFa/ZyKKWzrqRxv5uNtR38WGH+QY5GYOlfQqzpuj52rfES+MP45HyT2KABl9s6T tBJq60EkmdKxLQnLOgXyGJBR48ailb/yoh1L7GhDqIkm0YLEmrJIe7XCoSt5L43rzF2s 1t+z5t2DguNxxl6qLtJlpMbBwzajHpIH9/2dAmBNf5UlsysDR+oeaZo7fkYpNs+t8iKe aUSj57oLWhw+bloCFCyPI+00NSN388AJVXqG6rwKDKDzb3uFAdEp+CHOo4oLTFBouZ19 nf7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=OPJpGAYS; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id t7sor28095907plo.3.2019.01.04.12.56.37 for (Google Transport Security); Fri, 04 Jan 2019 12:56:38 -0800 (PST) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=OPJpGAYS; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7PoOlpFQPsMjakXihA1LLc08Bpkr7q8xCpQ3M2g6csg=; b=OPJpGAYSmyme1wm2pNRYFlKfBrH/jBcgmLWLGhlShFq2CZVk/aZ0HTjiA7Iypf850I gc7dnajTLdoDGRTBkKLJEwILJOw+SCY9T52VBqurC7UPLYSytV2WZveFs3LzUwlANFCd 0Sx+eOlBCvjbduggdL8tnvgQ1P+s5k68N2NPA= 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; bh=7PoOlpFQPsMjakXihA1LLc08Bpkr7q8xCpQ3M2g6csg=; b=adKGtWpBh4+xxXnXYzKsaF2Uym0JxA63h959BB8gyT8hIYzT9f/OKFc3DvqH6rAEyL msp2YdP36DOf8OB+vr+nh0XsG3hHfjYhi54bong4/faVMGfeXHI0ePQCytOPN+KgUdHn D6wN5TvbZLMjzD6O1TjTEVrqgDWO9uS+Lqa4EcoJWiZh5SJbStljmv5txhmNQ2wx+kox ifPw4M7l/2sutfZTgTBUCV6KaQEr8w2IQD9xKljjKJLB7Pv52X/A7nGVyykL7Bo8ioo9 FP4SJ3y4BjeYrqg6b5Y9ftA5Cu7NUOWeosbXPN+51LlHa75l6ZnvdmS/VGexOF+7yLap mBag== X-Gm-Message-State: AJcUukeTY93ByyA4dggNAjOvVxM6bnusBQvbnaGV0YCmePfhNEfiaWgg VQzBM6xjp0i8AuJ0sciNsSzQszZG X-Google-Smtp-Source: ALg8bN4bfl6pWNWbydF8wvNL7jKqslDcpZM8jK1Ofpx3+3pmhd1ZTgbsOyuKDh2o74j2jLYtZvtsTQ== X-Received: by 2002:a17:902:50e3:: with SMTP id c32mr52616262plj.318.1546635397174; Fri, 04 Jan 2019 12:56:37 -0800 (PST) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id l3sm98058334pga.92.2019.01.04.12.56.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 04 Jan 2019 12:56:36 -0800 (PST) From: John Stultz To: lkml Cc: Youlin Wang , Dan Williams , Vinod Koul , Zhuangluan Su , Ryan Grachek , Manivannan Sadhasivam , dmaengine@vger.kernel.org, Tanglei Han , John Stultz Subject: [PATCH 3/8 v2] dma: k3dma: Upgrade k3dma driver to support hisi_asp_dma hardware Date: Fri, 4 Jan 2019 12:56:23 -0800 Message-Id: <1546635388-13795-4-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1546635388-13795-1-git-send-email-john.stultz@linaro.org> References: <1546635388-13795-1-git-send-email-john.stultz@linaro.org> From: Youlin Wang There is an new "hisi-pcm-asp-dma-1.0" device added in "arch/arm64/boot/dts/hisilicon/hi3660.dtsi". So we have to add a matching id in the driver file: .compatible = "hisilicon,hisi-pcm-asp-dma-1.0" And also hisi-pcm-asp dma device needs no setting to the clock. So we skip this by adding and using soc data flags. After above this driver will support both k3 and hisi_asp dma hardware. Cc: Dan Williams Cc: Vinod Koul Cc: Zhuangluan Su Cc: Ryan Grachek Cc: Manivannan Sadhasivam Cc: dmaengine@vger.kernel.org Signed-off-by: Youlin Wang Signed-off-by: Tanglei Han [jstultz: Reworked to use of_match_data] Signed-off-by: John Stultz --- v2: * Reworked to use of_match_data --- drivers/dma/k3dma.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) -- 2.7.4 Acked-by: Manivannan Sadhasivam diff --git a/drivers/dma/k3dma.c b/drivers/dma/k3dma.c index fdec2b6..df61406 100644 --- a/drivers/dma/k3dma.c +++ b/drivers/dma/k3dma.c @@ -116,6 +116,13 @@ struct k3_dma_dev { unsigned int irq; }; + +#define K3_FLAG_NOCLK (1<<0) +struct k3dma_soc_data { + unsigned long flags; +}; + + #define to_k3_dma(dmadev) container_of(dmadev, struct k3_dma_dev, slave) static int k3_dma_config_write(struct dma_chan *chan, @@ -790,8 +797,21 @@ static int k3_dma_transfer_resume(struct dma_chan *chan) return 0; } +static const struct k3dma_soc_data k3_v1_dma_data = { + .flags = 0, +}; + +static const struct k3dma_soc_data asp_v1_dma_data = { + .flags = K3_FLAG_NOCLK, +}; + static const struct of_device_id k3_pdma_dt_ids[] = { - { .compatible = "hisilicon,k3-dma-1.0", }, + { .compatible = "hisilicon,k3-dma-1.0", + .data = &k3_v1_dma_data + }, + { .compatible = "hisilicon,hisi-pcm-asp-dma-1.0", + .data = &asp_v1_dma_data + }, {} }; MODULE_DEVICE_TABLE(of, k3_pdma_dt_ids); @@ -810,6 +830,7 @@ static struct dma_chan *k3_of_dma_simple_xlate(struct of_phandle_args *dma_spec, static int k3_dma_probe(struct platform_device *op) { + const struct k3dma_soc_data *soc_data; struct k3_dma_dev *d; const struct of_device_id *of_id; struct resource *iores; @@ -823,6 +844,10 @@ static int k3_dma_probe(struct platform_device *op) if (!d) return -ENOMEM; + soc_data = device_get_match_data(&op->dev); + if (!soc_data) + return -EINVAL; + d->base = devm_ioremap_resource(&op->dev, iores); if (IS_ERR(d->base)) return PTR_ERR(d->base); @@ -835,10 +860,12 @@ static int k3_dma_probe(struct platform_device *op) "dma-requests", &d->dma_requests); } - d->clk = devm_clk_get(&op->dev, NULL); - if (IS_ERR(d->clk)) { - dev_err(&op->dev, "no dma clk\n"); - return PTR_ERR(d->clk); + if (!(soc_data->flags & K3_FLAG_NOCLK)) { + d->clk = devm_clk_get(&op->dev, NULL); + if (IS_ERR(d->clk)) { + dev_err(&op->dev, "no dma clk\n"); + return PTR_ERR(d->clk); + } } irq = platform_get_irq(op, 0);