Commit c127f98b authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Greg Kroah-Hartman

slimbus: qcom-ctrl: use normal allocation

The previous patch addressed a warning but not the cause:

drivers/slimbus/qcom-ctrl.c: In function 'qcom_slim_probe':
drivers/slimbus/qcom-ctrl.c:584:9: error: passing argument 3 of 'dmam_alloc_coherent' from incompatible pointer type [-Werror=incompatible-pointer-types]

There are two things wrong here:

- The naming is very confusing, we now have a member named 'phys'
  that doesn't refer to a phys_addr_t but a dma_addr_t. If we needed
  a dma address, it should be named 'dma' to avoid confusion, and
  to make it less likely that someone passes it into a function that
  expects a physical address.

- The dma address is not used at all at this point. It may have been
  designed to support DMA in the future, but today it doesn't, so
  the only effect right now is to make transfers artificially slower
  by using uncached memory instead of cached memory for a temporary
  buffer.

This removes the unused structure member and instead changes the code
to call devm_kcalloc(), which matches the usage of the 'base' pointer
as an array of temporary buffers.

Fixes: db809859 ("slimbus: qcom: fix incompatible pointer warning")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b6a09416
......@@ -13,7 +13,6 @@
#include <linux/delay.h>
#include <linux/clk.h>
#include <linux/of.h>
#include <linux/dma-mapping.h>
#include <linux/pm_runtime.h>
#include "slimbus.h"
......@@ -93,7 +92,6 @@
struct slim_ctrl_buf {
void *base;
dma_addr_t phy;
spinlock_t lock;
int head;
int tail;
......@@ -579,17 +577,15 @@ static int qcom_slim_probe(struct platform_device *pdev)
if (ret)
goto err_rclk_enable_failed;
ctrl->tx.base = dmam_alloc_coherent(&pdev->dev,
(ctrl->tx.sl_sz * ctrl->tx.n),
&ctrl->tx.phy, GFP_KERNEL);
ctrl->tx.base = devm_kcalloc(&pdev->dev, ctrl->tx.n, ctrl->tx.sl_sz,
GFP_KERNEL);
if (!ctrl->tx.base) {
ret = -ENOMEM;
goto err;
}
ctrl->rx.base = dmam_alloc_coherent(&pdev->dev,
(ctrl->rx.sl_sz * ctrl->rx.n),
&ctrl->rx.phy, GFP_KERNEL);
ctrl->rx.base = devm_kcalloc(&pdev->dev,ctrl->rx.n, ctrl->rx.sl_sz,
GFP_KERNEL);
if (!ctrl->rx.base) {
ret = -ENOMEM;
goto err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment