Module Name:    src
Committed By:   jmcneill
Date:           Sat Sep  6 17:10:17 UTC 2014

Modified Files:
        src/sys/arch/arm/allwinner: awin_ac.c awin_dma.c awin_var.h

Log Message:
instead of writing 0 to cfg reg, just clear the loading bit -- otherwise the 
dma controller might go crazy when shutting down


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/allwinner/awin_ac.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/allwinner/awin_dma.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/allwinner/awin_var.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/allwinner/awin_ac.c
diff -u src/sys/arch/arm/allwinner/awin_ac.c:1.8 src/sys/arch/arm/allwinner/awin_ac.c:1.9
--- src/sys/arch/arm/allwinner/awin_ac.c:1.8	Sat Sep  6 16:54:00 2014
+++ src/sys/arch/arm/allwinner/awin_ac.c	Sat Sep  6 17:10:17 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_ac.c,v 1.8 2014/09/06 16:54:00 jmcneill Exp $ */
+/* $NetBSD: awin_ac.c,v 1.9 2014/09/06 17:10:17 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill <[email protected]>
@@ -30,7 +30,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: awin_ac.c,v 1.8 2014/09/06 16:54:00 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: awin_ac.c,v 1.9 2014/09/06 17:10:17 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -565,7 +565,7 @@ awinac_halt_output(void *priv)
 	struct awinac_softc *sc = priv;
 	uint32_t val;
 
-	awin_dma_set_config(sc->sc_pdma, 0);
+	awin_dma_halt(sc->sc_pdma);
 
 	if (sc->sc_has_pactrl_gpio)
 		awin_gpio_pindata_write(&sc->sc_pactrl_gpio, 0);

Index: src/sys/arch/arm/allwinner/awin_dma.c
diff -u src/sys/arch/arm/allwinner/awin_dma.c:1.3 src/sys/arch/arm/allwinner/awin_dma.c:1.4
--- src/sys/arch/arm/allwinner/awin_dma.c:1.3	Sat Sep  6 12:48:22 2014
+++ src/sys/arch/arm/allwinner/awin_dma.c	Sat Sep  6 17:10:17 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_dma.c,v 1.3 2014/09/06 12:48:22 jmcneill Exp $ */
+/* $NetBSD: awin_dma.c,v 1.4 2014/09/06 17:10:17 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill <[email protected]>
@@ -29,7 +29,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: awin_dma.c,v 1.3 2014/09/06 12:48:22 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: awin_dma.c,v 1.4 2014/09/06 17:10:17 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -282,6 +282,20 @@ awin_dma_transfer(struct awin_dma_channe
 	return 0;
 }
 
+void
+awin_dma_halt(struct awin_dma_channel *ch)
+{
+	uint32_t cfg;
+
+	cfg = awin_dma_get_config(ch);
+	if (ch->ch_type == AWIN_DMA_TYPE_NDMA) {
+		cfg &= ~AWIN_NDMA_CTL_DMA_LOADING;
+	} else {
+		cfg &= ~AWIN_DDMA_CTL_DMA_LOADING;
+	}
+	awin_dma_set_config(ch, cfg);
+}
+
 #if defined(DDB)
 void
 awin_dma_dump_regs(void)

Index: src/sys/arch/arm/allwinner/awin_var.h
diff -u src/sys/arch/arm/allwinner/awin_var.h:1.12 src/sys/arch/arm/allwinner/awin_var.h:1.13
--- src/sys/arch/arm/allwinner/awin_var.h:1.12	Sat Sep  6 00:15:34 2014
+++ src/sys/arch/arm/allwinner/awin_var.h	Sat Sep  6 17:10:17 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_var.h,v 1.12 2014/09/06 00:15:34 jmcneill Exp $ */
+/* $NetBSD: awin_var.h,v 1.13 2014/09/06 17:10:17 jmcneill Exp $ */
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -104,6 +104,7 @@ void	awin_dma_free(struct awin_dma_chann
 uint32_t awin_dma_get_config(struct awin_dma_channel *);
 void	awin_dma_set_config(struct awin_dma_channel *, uint32_t);
 int	awin_dma_transfer(struct awin_dma_channel *, paddr_t, paddr_t, size_t);
+void	awin_dma_halt(struct awin_dma_channel *);
 
 void	awin_wdog_reset(void);
 void	awin_tmr_cpu_init(struct cpu_info *);

Reply via email to