]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/dma/ste_dma40.c
staging:iio:dummy fix kfifo_buf kconfig dependency issue if kfifo modular and buffer...
[karo-tx-linux.git] / drivers / dma / ste_dma40.c
index 5ab5880d5c9041203bdb38a4d242c888777e8f2d..82d2b97ad942f96f2064c0ac58b11141fb85b54c 100644 (file)
@@ -2591,6 +2591,9 @@ dma40_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t dma_addr,
        int i;
 
        sg = kcalloc(periods + 1, sizeof(struct scatterlist), GFP_NOWAIT);
+       if (!sg)
+               return NULL;
+
        for (i = 0; i < periods; i++) {
                sg_dma_address(&sg[i]) = dma_addr;
                sg_dma_len(&sg[i]) = period_len;
@@ -3139,7 +3142,7 @@ static int __init d40_phy_res_init(struct d40_base *base)
 
 static struct d40_base * __init d40_hw_detect_init(struct platform_device *pdev)
 {
-       struct stedma40_platform_data *plat_data = pdev->dev.platform_data;
+       struct stedma40_platform_data *plat_data = dev_get_platdata(&pdev->dev);
        struct clk *clk = NULL;
        void __iomem *virtbase = NULL;
        struct resource *res = NULL;
@@ -3226,8 +3229,8 @@ static struct d40_base * __init d40_hw_detect_init(struct platform_device *pdev)
        num_log_chans = num_phy_chans * D40_MAX_LOG_CHAN_PER_PHY;
 
        dev_info(&pdev->dev,
-                "hardware rev: %d @ 0x%x with %d physical and %d logical channels\n",
-                rev, res->start, num_phy_chans, num_log_chans);
+                "hardware rev: %d @ %pa with %d physical and %d logical channels\n",
+                rev, &res->start, num_phy_chans, num_log_chans);
 
        base = kzalloc(ALIGN(sizeof(struct d40_base), 4) +
                       (num_phy_chans + num_log_chans + num_memcpy_chans) *
@@ -3485,7 +3488,7 @@ static int __init d40_of_probe(struct platform_device *pdev,
 {
        struct stedma40_platform_data *pdata;
        int num_phy = 0, num_memcpy = 0, num_disabled = 0;
-       const const __be32 *list;
+       const __be32 *list;
 
        pdata = devm_kzalloc(&pdev->dev,
                             sizeof(struct stedma40_platform_data),
@@ -3516,7 +3519,7 @@ static int __init d40_of_probe(struct platform_device *pdev,
        list = of_get_property(np, "disabled-channels", &num_disabled);
        num_disabled /= sizeof(*list);
 
-       if (num_disabled > STEDMA40_MAX_PHYS || num_disabled < 0) {
+       if (num_disabled >= STEDMA40_MAX_PHYS || num_disabled < 0) {
                d40_err(&pdev->dev,
                        "Invalid number of disabled channels specified (%d)\n",
                        num_disabled);
@@ -3535,7 +3538,7 @@ static int __init d40_of_probe(struct platform_device *pdev,
 
 static int __init d40_probe(struct platform_device *pdev)
 {
-       struct stedma40_platform_data *plat_data = pdev->dev.platform_data;
+       struct stedma40_platform_data *plat_data = dev_get_platdata(&pdev->dev);
        struct device_node *np = pdev->dev.of_node;
        int ret = -ENOENT;
        struct d40_base *base = NULL;
@@ -3579,9 +3582,7 @@ static int __init d40_probe(struct platform_device *pdev)
        if (request_mem_region(res->start, resource_size(res),
                               D40_NAME " I/O lcpa") == NULL) {
                ret = -EBUSY;
-               d40_err(&pdev->dev,
-                       "Failed to request LCPA region 0x%x-0x%x\n",
-                       res->start, res->end);
+               d40_err(&pdev->dev, "Failed to request LCPA region %pR\n", res);
                goto failure;
        }
 
@@ -3589,8 +3590,8 @@ static int __init d40_probe(struct platform_device *pdev)
        val = readl(base->virtbase + D40_DREG_LCPA);
        if (res->start != val && val != 0) {
                dev_warn(&pdev->dev,
-                        "[%s] Mismatch LCPA dma 0x%x, def 0x%x\n",
-                        __func__, val, res->start);
+                        "[%s] Mismatch LCPA dma 0x%x, def %pa\n",
+                        __func__, val, &res->start);
        } else
                writel(res->start, base->virtbase + D40_DREG_LCPA);