[U-Boot] dma: ti: k3-udma: Do not touch RT registers before channel configuration
diff mbox series

Message ID 20190425063815.25334-1-vigneshr@ti.com
State Accepted
Commit 5487772517817a7e3b501062f3962b56fad34075
Delegated to: Tom Rini
Headers show
Series
  • [U-Boot] dma: ti: k3-udma: Do not touch RT registers before channel configuration
Related show

Commit Message

Vignesh Raghavendra April 25, 2019, 6:38 a.m. UTC
From: Peter Ujfalusi <peter.ujfalusi@ti.com>

Upcoming sysfw (2019.03) will not open the channelized firewalls during
init, it only going to do so in response to the channel configuration
message.

Remove the channel state checks done before the channel configuration and
move it after the configuration for warning purposes.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
---
 drivers/dma/ti/k3-udma.c | 33 +++++++++------------------------
 1 file changed, 9 insertions(+), 24 deletions(-)

Comments

Grygorii Strashko April 25, 2019, 6:19 p.m. UTC | #1
On 25.04.19 09:38, Vignesh Raghavendra wrote:
> From: Peter Ujfalusi <peter.ujfalusi@ti.com>
> 
> Upcoming sysfw (2019.03) will not open the channelized firewalls during
> init, it only going to do so in response to the channel configuration
> message.
> 
> Remove the channel state checks done before the channel configuration and
> move it after the configuration for warning purposes.
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> ---
>  drivers/dma/ti/k3-udma.c | 33 +++++++++------------------------
>  1 file changed, 9 insertions(+), 24 deletions(-)

Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Keerthy May 2, 2019, 7:27 a.m. UTC | #2
On 25/04/19 11:49 PM, Grygorii Strashko wrote:
> 
> 
> On 25.04.19 09:38, Vignesh Raghavendra wrote:
>> From: Peter Ujfalusi <peter.ujfalusi@ti.com>
>>
>> Upcoming sysfw (2019.03) will not open the channelized firewalls during
>> init, it only going to do so in response to the channel configuration
>> message.
>>
>> Remove the channel state checks done before the channel configuration and
>> move it after the configuration for warning purposes.
>>
>> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
>> Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
>> ---
>>   drivers/dma/ti/k3-udma.c | 33 +++++++++------------------------
>>   1 file changed, 9 insertions(+), 24 deletions(-)
> 
> Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>

Tom,

This is needed for cpsw to work am65. Please pull this patch.

Thanks,
Keerthy

>
Tom Rini May 3, 2019, 6:20 p.m. UTC | #3
On Thu, Apr 25, 2019 at 12:08:15PM +0530, Vignesh Raghavendra wrote:

> From: Peter Ujfalusi <peter.ujfalusi@ti.com>
> 
> Upcoming sysfw (2019.03) will not open the channelized firewalls during
> init, it only going to do so in response to the channel configuration
> message.
> 
> Remove the channel state checks done before the channel configuration and
> move it after the configuration for warning purposes.
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>

Applied to u-boot/master, thanks!

Patch
diff mbox series

diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index f78a01aa8f8c..f896e2958755 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -575,14 +575,6 @@  static int udma_get_tchan(struct udma_chan *uc)
 
 	pr_debug("chan%d: got tchan%d\n", uc->id, uc->tchan->id);
 
-	if (udma_is_chan_running(uc)) {
-		dev_warn(ud->dev, "chan%d: tchan%d is running!\n", uc->id,
-			 uc->tchan->id);
-		udma_stop(uc);
-		if (udma_is_chan_running(uc))
-			dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
-	}
-
 	return 0;
 }
 
@@ -602,14 +594,6 @@  static int udma_get_rchan(struct udma_chan *uc)
 
 	pr_debug("chan%d: got rchan%d\n", uc->id, uc->rchan->id);
 
-	if (udma_is_chan_running(uc)) {
-		dev_warn(ud->dev, "chan%d: rchan%d is running!\n", uc->id,
-			 uc->rchan->id);
-		udma_stop(uc);
-		if (udma_is_chan_running(uc))
-			dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
-	}
-
 	return 0;
 }
 
@@ -652,14 +636,6 @@  static int udma_get_chan_pair(struct udma_chan *uc)
 
 	pr_debug("chan%d: got t/rchan%d pair\n", uc->id, chan_id);
 
-	if (udma_is_chan_running(uc)) {
-		dev_warn(ud->dev, "chan%d: t/rchan%d pair is running!\n",
-			 uc->id, chan_id);
-		udma_stop(uc);
-		if (udma_is_chan_running(uc))
-			dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
-	}
-
 	return 0;
 }
 
@@ -1071,6 +1047,15 @@  static int udma_alloc_chan_resources(struct udma_chan *uc)
 		}
 	}
 
+	if (udma_is_chan_running(uc)) {
+		dev_warn(ud->dev, "chan%d: is running!\n", uc->id);
+		udma_stop(uc);
+		if (udma_is_chan_running(uc)) {
+			dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
+			goto err_free_res;
+		}
+	}
+
 	/* PSI-L pairing */
 	ret = udma_navss_psil_pair(ud, uc->src_thread, uc->dst_thread);
 	if (ret) {