Re: [PATCH RFC v11 07/12] crypto: qce - Communicate the base physical address to the dmaengine
From: Vinod Koul <vkoul@kernel.org>
Date: 2026-03-04 14:39:50
Also in:
dmaengine, linux-arm-msm, linux-crypto, linux-doc, lkml
On 02-03-26, 16:57, Bartosz Golaszewski wrote:
quoted hunk ↗ jump to hunk
In order to let the BAM DMA engine know which address is used for register I/O, call dmaengine_slave_config() after requesting the RX channel and use the config structure to pass that information to the dmaengine core. This is done ahead of extending the BAM driver with support for pipe locking, which requires performing dummy writes when passing the lock/unlock flags alongside the command descriptors. Signed-off-by: Bartosz Golaszewski <redacted> --- drivers/crypto/qce/core.c | 3 ++- drivers/crypto/qce/dma.c | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-)diff --git a/drivers/crypto/qce/core.c b/drivers/crypto/qce/core.c index 2667fcd67fee826a44080da8f88a3e2abbb9b2cf..f6363d2a1231dcee0176824135389c42bec02153 100644 --- a/drivers/crypto/qce/core.c +++ b/drivers/crypto/qce/core.c@@ -211,6 +211,8 @@ static int qce_crypto_probe(struct platform_device *pdev) if (IS_ERR(qce->base)) return PTR_ERR(qce->base); + qce->base_phys = res->start; + ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32)); if (ret < 0) return ret;@@ -260,7 +262,6 @@ static int qce_crypto_probe(struct platform_device *pdev) qce->dma_size = resource_size(res); qce->base_dma = dma_map_resource(dev, res->start, qce->dma_size, DMA_BIDIRECTIONAL, 0); - qce->base_phys = res->start; ret = dma_mapping_error(dev, qce->base_dma); if (ret) return ret;diff --git a/drivers/crypto/qce/dma.c b/drivers/crypto/qce/dma.c index ba7a52fd4c6349d59c075c346f75741defeb6034..86f22c9a11f8a9e055c243dd8beaf1ded6f88bb9 100644 --- a/drivers/crypto/qce/dma.c +++ b/drivers/crypto/qce/dma.c@@ -109,7 +109,9 @@ void qce_write_dma(struct qce_device *qce, unsigned int offset, u32 val) int devm_qce_dma_request(struct qce_device *qce) { struct qce_dma_data *dma = &qce->dma; + struct dma_slave_config cfg = { }; struct device *dev = qce->dev; + int ret; dma->txchan = devm_dma_request_chan(dev, "tx"); if (IS_ERR(dma->txchan))@@ -121,6 +123,12 @@ int devm_qce_dma_request(struct qce_device *qce) return dev_err_probe(dev, PTR_ERR(dma->rxchan), "Failed to get RX DMA channel\n"); + cfg.dst_addr = qce->base_phys; + cfg.direction = DMA_MEM_TO_DEV;
So is this the address of crypto engine address where dma data is supposed to be pushed to..? -- ~Vinod