]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
dma: ti: k3-udma: Fix error handling for setup_resources() in udma_probe()
authorSiddharth Vadapalli <s-vadapalli@ti.com>
Tue, 20 Feb 2024 10:04:51 +0000 (15:34 +0530)
committerTom Rini <trini@konsulko.com>
Mon, 4 Mar 2024 18:41:04 +0000 (13:41 -0500)
In udma_probe() the return value of setup_resources() is stored in the
u32 "ch_count" member of "struct udma_dev", due to which any negative
return value which indicates an error is masked.

Fix this by storing the return value of setup_resources() in the already
declared integer variable "ret", followed by assigning it to the "ch_count"
member of "struct udma_dev" in case of no error.

While at it, change the "return ret" at the end of udma_probe() to a
"return 0", to explicitly indicate that probe was successful.

Fixes: a8837cf43839 ("dma: ti: k3-udma: Query DMA channels allocated from Resource Manager")
Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
drivers/dma/ti/k3-udma.c

index eea9ec96598ad708f26e1c5000da5b865cf86fbb..ed0a9bf487afef53f480217451e2d1fc5b7d1df1 100644 (file)
@@ -1770,9 +1770,11 @@ static int udma_probe(struct udevice *dev)
                return PTR_ERR(ud->ringacc);
 
        ud->dev = dev;
-       ud->ch_count = setup_resources(ud);
-       if (ud->ch_count <= 0)
-               return ud->ch_count;
+       ret = setup_resources(ud);
+       if (ret < 0)
+               return ret;
+
+       ud->ch_count = ret;
 
        for (i = 0; i < ud->bchan_cnt; i++) {
                struct udma_bchan *bchan = &ud->bchans[i];
@@ -1831,7 +1833,7 @@ static int udma_probe(struct udevice *dev)
 
        uc_priv->supported = DMA_SUPPORTS_MEM_TO_MEM | DMA_SUPPORTS_MEM_TO_DEV;
 
-       return ret;
+       return 0;
 }
 
 static int udma_push_to_ring(struct k3_nav_ring *ring, void *elem)