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>