Merge tag 'ti-v2020.07-rc3' of https://gitlab.denx.de/u-boot/custodians/u-boot-ti
[oweals/u-boot.git] / drivers / dma / ti / k3-udma.c
index 95f6b5a93a313128a8c93a293b97208ab34d0f2f..2ce16c8e27f16728a888ae7d1c2d087ee512742a 100644 (file)
@@ -7,12 +7,16 @@
 
 #include <common.h>
 #include <cpu_func.h>
+#include <log.h>
+#include <asm/cache.h>
 #include <asm/io.h>
 #include <asm/bitops.h>
 #include <malloc.h>
-#include <asm/dma-mapping.h>
+#include <linux/bitops.h>
+#include <linux/dma-mapping.h>
 #include <dm.h>
-#include <dm/device.h>
+#include <dm/device_compat.h>
+#include <dm/devres.h>
 #include <dm/read.h>
 #include <dm/of_access.h>
 #include <dma.h>
@@ -20,6 +24,7 @@
 #include <linux/delay.h>
 #include <dt-bindings/dma/k3-udma.h>
 #include <linux/bitmap.h>
+#include <linux/err.h>
 #include <linux/soc/ti/k3-navss-ringacc.h>
 #include <linux/soc/ti/cppi5.h>
 #include <linux/soc/ti/ti-udma.h>
@@ -936,7 +941,9 @@ static int udma_alloc_rchan_sci_req(struct udma_chan *uc)
 
        req.valid_params = TI_SCI_MSG_VALUE_RM_UDMAP_CH_FETCH_SIZE_VALID |
                        TI_SCI_MSG_VALUE_RM_UDMAP_CH_CQ_QNUM_VALID |
-                       TI_SCI_MSG_VALUE_RM_UDMAP_CH_CHAN_TYPE_VALID;
+                       TI_SCI_MSG_VALUE_RM_UDMAP_CH_CHAN_TYPE_VALID |
+                       TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_FLOWID_START_VALID |
+                       TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_FLOWID_CNT_VALID;
        req.nav_id = tisci_rm->tisci_dev_id;
        req.index = uc->rchan->id;
        req.rx_chan_type = mode;
@@ -952,9 +959,6 @@ static int udma_alloc_rchan_sci_req(struct udma_chan *uc)
        if (uc->rflow->id != uc->rchan->id && uc->dir != DMA_MEM_TO_MEM) {
                req.flowid_start = uc->rflow->id;
                req.flowid_cnt = 1;
-               req.valid_params |=
-                       TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_FLOWID_START_VALID |
-                       TI_SCI_MSG_VALUE_RM_UDMAP_CH_RX_FLOWID_CNT_VALID;
        }
 
        ret = tisci_rm->tisci_udmap_ops->rx_ch_cfg(tisci_rm->tisci, &req);
@@ -1551,7 +1555,7 @@ static int udma_request(struct dma *dma)
        return 0;
 }
 
-static int udma_free(struct dma *dma)
+static int udma_rfree(struct dma *dma)
 {
        struct udma_dev *ud = dev_get_priv(dma->dev);
        struct udma_chan *uc;
@@ -1846,7 +1850,7 @@ static const struct dma_ops udma_ops = {
        .transfer       = udma_transfer,
        .of_xlate       = udma_of_xlate,
        .request        = udma_request,
-       .free           = udma_free,
+       .rfree          = udma_rfree,
        .enable         = udma_enable,
        .disable        = udma_disable,
        .send           = udma_send,