Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 May 2011 16:25:59 GMT
From:      Jakub Wojciech Klama <jceel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 193797 for review
Message-ID:  <201105271625.p4RGPxO9067593@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@193797?ac=10

Change 193797 by jceel@jceel on 2011/05/27 16:25:25

	Some minor changes.

Affected files ...

.. //depot/projects/soc2010/jceel_dma/sys/arm/conf/DAVINCI#7 edit
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_devices.c#5 edit
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_mmc.c#4 edit
.. //depot/projects/soc2010/jceel_dma/sys/arm/davinci/if_dve.c#3 edit
.. //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma.c#6 edit
.. //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma.h#6 edit
.. //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdmatest/gpdmabench.c#1 add
.. //depot/projects/soc2010/jceel_dma/sys/modules/gpdmabench/Makefile#1 add

Differences ...

==== //depot/projects/soc2010/jceel_dma/sys/arm/conf/DAVINCI#7 (text+ko) ====

@@ -7,7 +7,7 @@
 ident		DAVINCI
 include		"../davinci/std.davinci"
 
-makeoptions	MODULES_OVERRIDE="dmatest"
+makeoptions	MODULES_OVERRIDE="gpdmatest gpdmabench"
 
 #makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols
 makeoptions	WERROR="-Werror"

==== //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_devices.c#5 (text+ko) ====

@@ -37,7 +37,7 @@
 #include <arm/davinci/davincireg.h>
 
 struct gpdma_allocation davinci_edma_allocations[] = {
-	{ "edma0", 12, 12, gpdma_memutils_init, NULL },
+	//{ "edma0", 12, 12, gpdma_memutils_init, NULL },
 	{ "edma0", 13, 15, gpdma_cdev_init, NULL },
 	{ "edma0", 24, 25, gpdma_cdev_init, NULL },
 	{ "edma0", 30, 31, gpdma_cdev_init, NULL },

==== //depot/projects/soc2010/jceel_dma/sys/arm/davinci/davinci_mmc.c#4 (text+ko) ====

@@ -211,7 +211,7 @@
 		return (ENXIO);
 	}
 
-	sc->dm_use_dma = 1;
+	sc->dm_use_dma = 0; /* XXX */
 
 	sc->dm_rx_xfer = gpdma_alloc_transfer(sc->dm_dmarx_res);
 	if (sc->dm_rx_xfer == NULL) {
@@ -295,11 +295,7 @@
 		gpdma_set_transfer_func(sc->dm_tx_xfer, GPDMA_COPY);
 		gpdma_set_transfer_opts(sc->dm_tx_xfer, GPDMA_TRANSFER_EXTTRIG);
 		gpdma_set_transfer_callback(sc->dm_tx_xfer, davinci_mmc_dmatxintr, sc);
-		
 	
-		sc->dm_tx_xfer->dt_src.db_dmatag = sc->dm_tx_tag;
-		sc->dm_tx_xfer->dt_src.db_dmamap = sc->dm_tx_map;
-
 		/* Source buffer */
 		gpdma_set_buffer_layout(sc->dm_tx_xfer, GPDMA_BUF_SRC, GPDMABUF_BLOCK);
 		
@@ -516,11 +512,8 @@
 static void
 davinci_mmc_dmarxintr(int status, void *arg)
 {
-//	struct davinci_mmc_softc *sc = (struct davinci_mmc_softc *)arg;
-
-//	device_printf(sc->dm_dev, "davinci_mmc_dmarxintr(%d)\n", status);
-	//if (sc->dm_data != NULL && sc->dm_data->data != NULL)
-	//	memcpy(sc->dm_data->data, sc->dm_rx_buffer, sc->dm_data->len);
+	/* not used at the moment */
+	/* XXX: error checking */
 }
 
 static void
@@ -528,7 +521,6 @@
 {
 	struct davinci_mmc_softc *sc = (struct davinci_mmc_softc *)arg;
 
-	//device_printf(sc->dm_dev, "davinci_mmc_dmatxintr(%d)\n", status);
 	sc->dm_xfer_done = sc->dm_data->len;
 }
 

==== //depot/projects/soc2010/jceel_dma/sys/arm/davinci/if_dve.c#3 (text+ko) ====

@@ -205,12 +205,13 @@
 	sc->dve_dev = dev;
 
 	/* XXX how to get proper MAC address? */
+	/* semihalf: 00:26:D0:00:00:03 */
 	sc->dve_enaddr[0] = 0x00;
-	sc->dve_enaddr[1] = 0x01;
-	sc->dve_enaddr[2] = 0x02;
-	sc->dve_enaddr[3] = 0x03;
-	sc->dve_enaddr[4] = 0x04;
-	sc->dve_enaddr[5] = 0x05;
+	sc->dve_enaddr[1] = 0x26;
+	sc->dve_enaddr[2] = 0xd0;
+	sc->dve_enaddr[3] = 0x00;
+	sc->dve_enaddr[4] = 0x00;
+	sc->dve_enaddr[5] = 0x03;
 
 	mtx_init(&sc->dve_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK,
 	    MTX_DEF);

==== //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma.c#6 (text+ko) ====

@@ -383,6 +383,41 @@
 		xfer->dt_callback(status, xfer->dt_callback_arg);
 }
 
+int
+gpdma_alloc_buffer(gpdma_transfer_t xfer, int buffer, size_t bufsize,
+    void **addr)
+{
+	struct gpdma_buffer *buf = &xfer->dt_buffers[buffer];
+	struct gpdma_mapping map;
+	int err;
+
+	bus_dma_tag_create(xfer->dt_engine->de_dmatag,
+	    1, 0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
+	    NULL, NULL, bufsize, 1, bufsize, 0,
+	    NULL, NULL, &buf->db_dmatag);
+
+	err = bus_dmamem_alloc(buf->db_dmatag, addr, 0, &buf->db_dmamap);
+	if (err)
+		return (err);
+
+	bus_dmamap_load(buf->db_dmatag, buf->db_dmamap, *addr, 
+	    bufsize, gpdma_dmamap_load_cb, &map, BUS_DMA_NOWAIT);
+
+	if (map.gm_error != 0)
+		return (map.gm_error);
+
+	if (map.gm_len != bufsize)
+		return (EFBIG);
+
+	if (map.gm_addr == 0)
+		return (EINVAL);
+
+	buf->db_needsync = 1;
+	buf->db_addr = map.gm_addr;
+	buf->db_length = map.gm_len;
+	return (0);
+}
+
 int 
 gpdma_load_buffer_raw(struct gpdma_transfer *xfer, int buffer,
     bus_addr_t paddr, bus_size_t length)

==== //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma.h#6 (text+ko) ====

@@ -163,6 +163,7 @@
 
 void gpdma_transfer_done(struct gpdma_transfer *, int);
 
+int gpdma_alloc_buffer(gpdma_transfer_t, int, size_t, void **);
 int gpdma_load_buffer_raw(gpdma_transfer_t, int, bus_addr_t, bus_size_t);
 int gpdma_load_buffer_virt(gpdma_transfer_t, int, void *, size_t);
 int gpdma_load_buffer_uio(gpdma_transfer_t, int, struct uio *);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105271625.p4RGPxO9067593>