From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 78E59221FD0 for ; Sat, 13 Dec 2025 07:55:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765612516; cv=none; b=P0sCHNQEcubICcbYzh13xS4b74DmbmCEYWvXsKlDSpE18pw6QCy9Ut31y3AFmn6+RTFJT0oJxQcYPhomfy3UMSfN4faL+LtwR5FJF6AjKUTXgfEZWm4v+hLsHPW2Z/iqsrI4A/nUzD0rKAA35KbZputiuPzWqL4UExRDQjdseRU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765612516; c=relaxed/simple; bh=/1Y7ZubKQzIS9Nn9KYozZYf4WuMV9JVNDqL7JrO650Q=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=AkHoUQcIF9bjPcnbwJ609OQaftCBzmniokWnL3+8QCbvenF1tLel2h+smYMdFMdQI5Ht+ruMmsQ1jonulq57MJ31jXFeJ1ha/HhPgxAEKDFFt9AfcM/mWHYbrfIN6ncbPXDlidXYpR3Wg5HsrtyrIvmmr3J4YStJWvKZKgRdRTk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=f72A4ZBx; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="f72A4ZBx" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-7b9c17dd591so1650258b3a.3 for ; Fri, 12 Dec 2025 23:55:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1765612513; x=1766217313; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=PSg2TYT9sWOtcESEo56kzWemNLsi4EVpvVRgATHWE1A=; b=f72A4ZBxBYkoapuKADgCoKBW613YRAqiqEAeeMi6rqCN9XJpUoc7jW4RHwwLO4PJE6 +wsgiqmToq17kNJRMgtqn14MJ19ih+VWKe704QMKUaFN3R2u6GAYe+x0FturEt6tSHvJ nkgxdVaxbBQfsvwdHvOEe3I25A1+8MSGVF9jtMgfeQJ3O9jasl881g06ErMXznqZ9VR+ O3rNuV2KF6jN3ZRioIRQtZLcFtEjZVDtaJHx3e2xgen+PGsT/V1XLSZ8qhVt7IH9jaBs WylCRweAeqzuz3qksqxOMZd2yHZ/WdLCfnm96cpyX8cpT+zg7Vb0wxmhnr3gcqytDrzM LcNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765612513; x=1766217313; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PSg2TYT9sWOtcESEo56kzWemNLsi4EVpvVRgATHWE1A=; b=NY/XSDaEan0nELuOCCXvwVmoPMHaA7mI8/BXfF+kFTVEpTWy0awkk4ZG90maKQSXXs 5csUdHYW1hQOwdizn1kYl5YEaf5GL0g5fpfqGY7lyO9hWccrdEF8dqrZ2DEKnSP+oK/i yKqZdXGHrYNto8wo0vfThYhwfW8Ve9E5OgI9NvBuY1PpK3yScPl0QHulhZjhM2u7vBbw e7J8uQUoVK6MZD1JD1vWEg4Hbl6PQvscG7I1M2gDXvuwJZiSljt3tCRsbf/9AGFldFNF 3sHmCdV9Fx9dL+0nKEqfj8adywJTsnH/z88K8tvJfhA66JWFJJueEshs3bNEXl+Dq1L6 pOZw== X-Forwarded-Encrypted: i=1; AJvYcCVYEIcd8H8NZfMGwKrpya8NMpRZCnhqcfTMj1/k7Av3uphzHzo5BFnz+uQB6RlC89NU4ffJuSKzcOTvBfg=@vger.kernel.org X-Gm-Message-State: AOJu0Yx75Ce7S/CFzic1FRIKLi37h+Er05uUF4uJJz1bKYvw/12onW1L EqGKmOIgY7WnRBeOnpuWx4m7IQQx2TrkaYSAmLZ0qSBje/6zFf4xaGaXiVXfH8i/wTk= X-Gm-Gg: AY/fxX69/5teJhGiG/1TRBNcQ8TQZ5lF75Da38MeJ2U5596UrvEv4K++F7mTsHvHf2D ipc2nUsC8pCWh/OrsgRVaE0Vs1MwcMN2Wjrua3LV6mjto2cnLq9bMWA5YvLdPYLLNPYTebf9V9a L7H2j2VoF+iG9uslx5uv0PPJyvYSWedQYT1hU8SDGAGHyqaQ5MmTV/mDZidmqAWJiiLIQ5hC13x BlaYnJIffDatA0nnxVO25oyB0Hdn/eCkO5jTR4cxgtUOqLcg3cvk8Uf02aQ1mS7lptAvmtbFnfa YkZROxyFyQldnyvRemowj44yLDU17ybQQPbraazkFV9WZDsAm59tCluUnhDNTHq3erEVh78H2J7 3IhvWJyjQue785fN/H0yKrWcf3eziZzjX2zbDp92cco2/Lx38meNVUYG7tK/vmJS0moDY09Qz7T V8A+SIH+/JZPT2GkgU9CgFxIF3NS6Psg== X-Google-Smtp-Source: AGHT+IHOWrUINqZuvftQzED4J6JEOwCF3MwpJCzvYtbDq2TpenTmo8Kz5bbfjFWruq5ev9Hib6L/8Q== X-Received: by 2002:a05:6a00:1f13:b0:7f6:3f21:7d22 with SMTP id d2e1a72fcca58-7f6693a69e9mr3821365b3a.45.1765612512724; Fri, 12 Dec 2025 23:55:12 -0800 (PST) Received: from [100.64.0.1] ([167.103.29.104]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7f4c27733edsm7218185b3a.20.2025.12.12.23.55.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 12 Dec 2025 23:55:12 -0800 (PST) Message-ID: <8a3d3db6-6614-42f7-a271-e6188391daf6@sifive.com> Date: Sat, 13 Dec 2025 16:55:06 +0900 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/3] dmaengine: dw-axi-dmac: Add support for CV1800B DMA To: Inochi Amaoto Cc: "Anton D . Stavinskii" , dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, sophgo@lists.linux.dev, Eugeniy Paltsev , Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Chen Wang , Alexander Sverdlin , Longbin Li , Yixun Lan , Ze Huang References: <20251212020504.915616-1-inochiama@gmail.com> <20251212020504.915616-3-inochiama@gmail.com> From: Samuel Holland Content-Language: en-US In-Reply-To: <20251212020504.915616-3-inochiama@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi Inochi, On 2025-12-12 11:05 AM, Inochi Amaoto wrote: > As the DMA controller on Sophgo CV1800 series SoC only has 8 channels, > the SoC provides a dma multiplexer to reuse the DMA channel. However, > the dma multiplexer also controlls the DMA interrupt multiplexer, which typo: controls > means that the dma multiplexer needs to know the channel number. > > Allow the driver to use DMA phandle args as the channel number, so the > DMA multiplexer can route the DMA interrupt correctly. > > Signed-off-by: Inochi Amaoto > --- > .../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 23 ++++++++++++++++--- > drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 1 + > 2 files changed, 21 insertions(+), 3 deletions(-) > > 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 b23536645ff7..62bf0d0dc354 100644 > --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c > @@ -50,6 +50,7 @@ > #define AXI_DMA_FLAG_HAS_APB_REGS BIT(0) > #define AXI_DMA_FLAG_HAS_RESETS BIT(1) > #define AXI_DMA_FLAG_USE_CFG2 BIT(2) > +#define AXI_DMA_FLAG_HANDSHAKE_AS_CHAN BIT(3) > > static inline void > axi_dma_iowrite32(struct axi_dma_chip *chip, u32 reg, u32 val) > @@ -1361,15 +1362,26 @@ static struct dma_chan *dw_axi_dma_of_xlate(struct of_phandle_args *dma_spec, > struct of_dma *ofdma) > { > struct dw_axi_dma *dw = ofdma->of_dma_data; > + unsigned int handshake = dma_spec->args[0]; > struct axi_dma_chan *chan; > struct dma_chan *dchan; > > - dchan = dma_get_any_slave_channel(&dw->dma); > + if (dw->hdata->use_handshake_as_channel_number) { > + if (handshake >= dw->hdata->nr_channels) > + return NULL; > + > + chan = &dw->chan[handshake]; > + dchan = dma_get_slave_channel(&chan->vc.chan); > + } else { > + dchan = dma_get_any_slave_channel(&dw->dma); > + } > + > if (!dchan) > return NULL; > > - chan = dchan_to_axi_dma_chan(dchan); > - chan->hw_handshake_num = dma_spec->args[0]; > + if (!chan) When use_handshake_as_channel_number is false, chan is uninitialized here. Regards, Samuel > + chan = dchan_to_axi_dma_chan(dchan); > + chan->hw_handshake_num = handshake; > return dchan; > } > > @@ -1508,6 +1520,8 @@ static int dw_probe(struct platform_device *pdev) > return ret; > } > > + chip->dw->hdata->use_handshake_as_channel_number = !!(flags & AXI_DMA_FLAG_HANDSHAKE_AS_CHAN); > + > chip->dw->hdata->use_cfg2 = !!(flags & AXI_DMA_FLAG_USE_CFG2); > > chip->core_clk = devm_clk_get(chip->dev, "core-clk"); > @@ -1663,6 +1677,9 @@ static const struct of_device_id dw_dma_of_id_table[] = { > }, { > .compatible = "intel,kmb-axi-dma", > .data = (void *)AXI_DMA_FLAG_HAS_APB_REGS, > + }, { > + .compatible = "sophgo,cv1800b-axi-dma", > + .data = (void *)AXI_DMA_FLAG_HANDSHAKE_AS_CHAN, > }, { > .compatible = "starfive,jh7110-axi-dma", > .data = (void *)(AXI_DMA_FLAG_HAS_RESETS | AXI_DMA_FLAG_USE_CFG2), > diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h > index b842e6a8d90d..67cc199e24d1 100644 > --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h > +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h > @@ -34,6 +34,7 @@ struct dw_axi_dma_hcfg { > bool reg_map_8_channels; > bool restrict_axi_burst_len; > bool use_cfg2; > + bool use_handshake_as_channel_number; > }; > > struct axi_dma_chan { > -- > 2.52.0 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv