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 *);