From patchwork Wed Jan 16 17:10:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 155732 Delivered-To: patches@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp901464jaa; Wed, 16 Jan 2019 09:10:48 -0800 (PST) X-Received: by 2002:a17:902:145:: with SMTP id 63mr10853571plb.256.1547658648301; Wed, 16 Jan 2019 09:10:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547658648; cv=none; d=google.com; s=arc-20160816; b=Pv96i7xeJym5nAoLFhvdKTrIkMja6nBIFcmfwskGo6ov3JKHY9aR9u5qroulNihdaw CiRr2DafK5EOdODAWvReqf3DbQVmktEbiqgWiixtADvPXmmrhgDSsNUwk2WtvKRtzrEw aQFFPnuMoEE3n0UY+gkAySdlSh0Pa0TJC/jomD5RdMsSfX/Caamz+W1QkKgON7TbA2fs y/yacDDyFHAdg500YxXSkGXuNUsyd9mb/ZWJGyX6UvEe1e0ARCfiGdgJD5M5VQt280C0 QX5OYYbxlT0eOHtjae2Y+TKhhIaBo/jmyRj+Ee4zm/BL51ucOKrrIw7xi/Oa5SLrBvWI 7qMw== 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=GvaGd5Qa7PcuxUq/r8GFXFG1FEuIWEy4GqPFolG9iUI=; b=O50hQp2PXUx2sqLWtdp4LjOd1Q3aIAVc+x8vQ7yrkyonx8RzPLerO+icWD37NmK5Wh JC1GBSn1N9EaNBjIcHL6sLZgFdp+SzjFJ/a5hVaI+yW55ceO2/cJ4Qo9wiEQHbVedpE5 aoXxYFvV5qdQDIjQCavcVMnM3igMgP5XqLG6Trz4awvXuk3wnr8ngtErhYceb6C+Uz4b s1dHXnBAKUd5f+MTiGAoE9cMhWpQ21aUxKWBuVG2tUWwlfg3Uv9QSBzEovIgldlzaSqG NP+ImzIP7RnAVyidumPtAt/c+OooHXcVrrcXV9NurS+54FQVRltYp/NbTML70w4iv1PB aNsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QQqt5Z5O; 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 h66sor10226800plb.46.2019.01.16.09.10.48 for (Google Transport Security); Wed, 16 Jan 2019 09:10:48 -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=QQqt5Z5O; 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=GvaGd5Qa7PcuxUq/r8GFXFG1FEuIWEy4GqPFolG9iUI=; b=QQqt5Z5O2H7oIxoZeFjry1ABrYrhostw7JbpxWIgLTZ0iJm5v1u6vgyoVQRF/gFQZy XUr0QR8FSQJpHCbnfwhBc9JkydtynTMfRMSxfmm1XmcvNJAjBkiafL1TgY1QW9+Q1zI4 RjlLe6zFaw2VWaD5afqIigf0LTzeHqw3J22Sc= 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=GvaGd5Qa7PcuxUq/r8GFXFG1FEuIWEy4GqPFolG9iUI=; b=FoYq9S9XN3zC+iNkEMVYei3QtY7ZoZEWn8enrRyWSi28jPHpSXnJmsUPCOxz2fTduf qNh0/33V1h6V7UhQmMTVO+7QbvnD95UHgnWy4JjTUkm6mceByuaiftcO2XgkIS6h0qRa rlDMC2PvpPpFhUDgSlGLJHvNkK1Lxf9yxhQdeZc4JzmlYPqVcUvRtbfep6Ju/JwAUl31 s+scku3phLwafSEsZkIi10pPZv8JJ6Y20ZQC3K5jlYIFEnVtQbW+GTz91L5OR77aFKjM PQxkcQLJgMdQNDGzF/hvosdRPm4kvNzxkDwWw3s2jwj+uucy+J58rZHCu4WBawEFg5D3 y+qQ== X-Gm-Message-State: AJcUukdkDKpC2tOxrXJuMePSIATkSIInTLCCTWYJ50bFFYOf6pyRG9Je 7UKXwJmV7uaHmggR5ZoPH5t6q/o8 X-Google-Smtp-Source: ALg8bN6QSyhmNN8OYdpQj1WLhF4G3UWoQr/ZtLB71UxcnCH32cTAFCIaJYl+aidjgLEWGhmBZAzakA== X-Received: by 2002:a17:902:7687:: with SMTP id m7mr10780477pll.187.1547658647933; Wed, 16 Jan 2019 09:10:47 -0800 (PST) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id h129sm17914023pfb.110.2019.01.16.09.10.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 16 Jan 2019 09:10:46 -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 v4] dma: k3dma: Upgrade k3dma driver to support hisi_asp_dma hardware Date: Wed, 16 Jan 2019 09:10:24 -0800 Message-Id: <1547658629-25378-4-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547658629-25378-1-git-send-email-john.stultz@linaro.org> References: <1547658629-25378-1-git-send-email-john.stultz@linaro.org> From: Youlin Wang On the hi3660 hardware there are two (at least) DMA controllers, the DMA-P (Peripherial DMA) and the DMA-A (Audio DMA). The two blocks are similar, but have some slight differences. This resulted in the vendor implementing two separate drivers, which after review, they have been able to condense and re-use the existing k3dma driver. Thus, this patch adds support for the new "hisi-pcm-asp-dma-1.0" compatible string in the binding. One difference with the DMA-A controller, is that it does not need to initialize a 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 Acked-by: Manivannan Sadhasivam Signed-off-by: Youlin Wang Signed-off-by: Tanglei Han [jstultz: Reworked to use of_match_data, commit msg improvements] Signed-off-by: John Stultz --- v2: * Reworked to use of_match_data v3: * Further rework of the commit message --- drivers/dma/k3dma.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) -- 2.7.4 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);