PERFORCE change 193797 for review
Jakub Wojciech Klama
jceel at FreeBSD.org
Fri May 27 16:26:00 UTC 2011
http://p4web.freebsd.org/@@193797?ac=10
Change 193797 by jceel at 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 *);
More information about the p4-projects
mailing list