crypto: rockchip: add DMA32 addressing range limits

Crypto only supports DMA32 address addressing and behaves
 abnormally on more than 4G DDR.

Signed-off-by: Lin Jinhan <troy.lin@rock-chips.com>
Change-Id: I5b6b5c9eb5f00698d25e47a778f358380f4121eb
This commit is contained in:
Lin Jinhan
2021-12-01 10:29:16 +08:00
committed by Tao Huang
parent adb2ff0444
commit 4c58956a5e

View File

@@ -694,6 +694,7 @@ static int rk_crypto_probe(struct platform_device *pdev)
rk_dev->clks_num = devm_clk_bulk_get_all(dev, &rk_dev->clk_bulks);
if (rk_dev->clks_num < 0) {
err = rk_dev->clks_num;
dev_err(dev, "failed to get clks property\n");
goto err_crypto;
}
@@ -709,12 +710,17 @@ static int rk_crypto_probe(struct platform_device *pdev)
err = devm_request_irq(dev, rk_dev->irq,
rk_crypto_irq_handle, IRQF_SHARED,
"rk-crypto", pdev);
if (err) {
dev_err(dev, "irq request failed.\n");
goto err_crypto;
}
err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
if (err) {
dev_err(dev, "crypto: No suitable DMA available.\n");
goto err_crypto;
}
rk_dev->dev = dev;
rk_dev->hw_info =
@@ -730,7 +736,8 @@ static int rk_crypto_probe(struct platform_device *pdev)
goto err_crypto;
}
rk_dev->addr_vir = (void *)__get_free_pages(GFP_KERNEL, RK_BUFFER_ORDER);
rk_dev->addr_vir = (void *)__get_free_pages(GFP_KERNEL | GFP_DMA32,
RK_BUFFER_ORDER);
if (!rk_dev->addr_vir) {
err = -ENOMEM;
dev_err(dev, "__get_free_page failed.\n");