Module Name:    src
Committed By:   skrll
Date:           Sat Sep 13 08:08:24 UTC 2014

Modified Files:
        src/sys/arch/arm/broadcom: bcm2835_emmc.c files.bcm2835
        src/sys/arch/evbarm/conf: RPI

Log Message:
Make emmc use of dma controller optional and disable the bcmdmac for now.

It doesn't work for me.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/broadcom/bcm2835_emmc.c
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/broadcom/files.bcm2835
cvs rdiff -u -r1.52 -r1.53 src/sys/arch/evbarm/conf/RPI

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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.13 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.14
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.13	Fri Sep 12 21:00:11 2014
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Sat Sep 13 08:08:24 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.13 2014/09/12 21:00:11 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.14 2014/09/13 08:08:24 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,9 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.13 2014/09/12 21:00:11 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.14 2014/09/13 08:08:24 skrll Exp $");
+
+#include "bcmdmac.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -79,8 +81,10 @@ struct bcmemmc_softc {
 static int bcmemmc_match(device_t, struct cfdata *, void *);
 static void bcmemmc_attach(device_t, device_t, void *);
 static void bcmemmc_attach_i(device_t);
+#if BCMDMAC > 0
 static int bcmemmc_xfer_data_dma(struct sdhc_host *, struct sdmmc_command *);
 static void bcmemmc_dma_done(void *);
+#endif
 
 CFATTACH_DECL_NEW(bcmemmc, sizeof(struct bcmemmc_softc),
     bcmemmc_match, bcmemmc_attach, NULL, NULL);
@@ -106,7 +110,6 @@ bcmemmc_attach(device_t parent, device_t
 	struct amba_attach_args *aaa = aux;
 	prop_number_t frequency;
 	int error;
-	int rseg;
 
 	sc->sc.sc_dev = self;
  	sc->sc.sc_dmat = aaa->aaa_dmat;
@@ -116,14 +119,10 @@ bcmemmc_attach(device_t parent, device_t
 	sc->sc.sc_flags |= SDHC_FLAG_NO_HS_BIT;
 	sc->sc.sc_caps = SDHC_VOLTAGE_SUPP_3_3V | SDHC_HIGH_SPEED_SUPP |
 	    SDHC_MAX_BLK_LEN_1024;
- 	sc->sc.sc_flags |= SDHC_FLAG_USE_DMA;
-	sc->sc.sc_flags |= SDHC_FLAG_EXTERNAL_DMA;
-	sc->sc.sc_caps |= SDHC_DMA_SUPPORT;
 
 	sc->sc.sc_host = sc->sc_hosts;
 	sc->sc.sc_clkbase = 50000;	/* Default to 50MHz */
 	sc->sc_iot = aaa->aaa_iot;
-	sc->sc.sc_vendor_transfer_data_dma = bcmemmc_xfer_data_dma;
 
 	/* Fetch the EMMC clock frequency from property if set. */
 	frequency = prop_dictionary_get(dict, "frequency");
@@ -154,15 +153,22 @@ bcmemmc_attach(device_t parent, device_t
 	}
 	aprint_normal_dev(self, "interrupting on intr %d\n", aaa->aaa_intr);
 
+#if BCMDMAC > 0
 	sc->sc_dmac = bcm_dmac_alloc(BCM_DMAC_TYPE_NORMAL, IPL_SDMMC,
 	    bcmemmc_dma_done, sc);
 	if (sc->sc_dmac == NULL)
-		goto fail;
+		goto done;
+
+ 	sc->sc.sc_flags |= SDHC_FLAG_USE_DMA;
+	sc->sc.sc_flags |= SDHC_FLAG_EXTERNAL_DMA;
+	sc->sc.sc_caps |= SDHC_DMA_SUPPORT;
+	sc->sc.sc_vendor_transfer_data_dma = bcmemmc_xfer_data_dma;
 
 	sc->sc_state = EMMC_DMA_STATE_IDLE;
 	mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_SDMMC);
 	cv_init(&sc->sc_cv, "bcmemmcdma");
 
+	int rseg;
 	error = bus_dmamem_alloc(sc->sc.sc_dmat, PAGE_SIZE, PAGE_SIZE,
 	     PAGE_SIZE, sc->sc_segs, 1, &rseg, BUS_DMA_WAITOK);
 	if (error) {
@@ -194,6 +200,8 @@ bcmemmc_attach(device_t parent, device_t
 		goto fail;
 	}
 
+done:
+#endif
 	config_interrupts(self, bcmemmc_attach_i);
 	return;
 
@@ -229,6 +237,7 @@ fail:
 	bus_space_unmap(sc->sc_iot, sc->sc_ioh, sc->sc_ios);
 }
 
+#if BCMDMAC > 0
 static int
 bcmemmc_xfer_data_dma(struct sdhc_host *hp, struct sdmmc_command *cmd)
 {
@@ -315,3 +324,4 @@ bcmemmc_dma_done(void *arg)
 	mutex_exit(&sc->sc_lock);
 
 }
+#endif

Index: src/sys/arch/arm/broadcom/files.bcm2835
diff -u src/sys/arch/arm/broadcom/files.bcm2835:1.22 src/sys/arch/arm/broadcom/files.bcm2835:1.23
--- src/sys/arch/arm/broadcom/files.bcm2835:1.22	Sun Sep  7 14:16:44 2014
+++ src/sys/arch/arm/broadcom/files.bcm2835	Sat Sep 13 08:08:24 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: files.bcm2835,v 1.22 2014/09/07 14:16:44 jmcneill Exp $
+#	$NetBSD: files.bcm2835,v 1.23 2014/09/13 08:08:24 skrll Exp $
 #
 # Configuration info for Broadcom BCM2835 ARM Peripherals
 #
@@ -57,7 +57,7 @@ file	arch/arm/broadcom/bcm2835_emmc.c	bc
 # DMA Controller (BCM2835_DMA0_BASE)
 device	bcmdmac
 attach	bcmdmac at obio with bcmdmac_amba
-file	arch/arm/broadcom/bcm2835_dmac.c	bcmdmac
+file	arch/arm/broadcom/bcm2835_dmac.c	bcmdmac		needs-flag
 
 # USB (BCM2835_USB_BASE)
 attach dwctwo at obio with bcmdwctwo

Index: src/sys/arch/evbarm/conf/RPI
diff -u src/sys/arch/evbarm/conf/RPI:1.52 src/sys/arch/evbarm/conf/RPI:1.53
--- src/sys/arch/evbarm/conf/RPI:1.52	Fri Sep 12 20:51:21 2014
+++ src/sys/arch/evbarm/conf/RPI	Sat Sep 13 08:08:24 2014
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: RPI,v 1.52 2014/09/12 20:51:21 jmcneill Exp $
+#	$NetBSD: RPI,v 1.53 2014/09/13 08:08:24 skrll Exp $
 #
 #	RPi -- Raspberry Pi
 #
@@ -181,7 +181,7 @@ bcmmbox0	at obio?
 vcmbox0 	at bcmmbox0
 
 # DMA Controller
-bcmdmac0	at obio?
+#bcmdmac0	at obio?
 
 # VCHIQ
 vchiq0		at obio?

Reply via email to