Date: Sat, 14 Aug 2010 00:25:49 GMT From: Jakub Wojciech Klama <jceel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 182377 for review Message-ID: <201008140025.o7E0Pn22011492@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@182377?ac=10 Change 182377 by jceel@jceel on 2010/08/14 00:25:05 Update gpdma_cdev to new channel allocation mechanism. Affected files ... .. //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma_cdev.c#3 edit .. //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma_cdev.h#2 edit Differences ... ==== //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma_cdev.c#3 (text+ko) ==== @@ -284,32 +284,33 @@ dcs_unlock(dcs); } -int -gpdma_make_cdev(struct gpdma_engine *gpdma, struct resource *rv, struct cdev **cdev) +void +gpdma_cdev_init(struct resource **res, int nch, void *arg) { struct gpdma_cdev_softc *dcs; + struct cdev *cdev; + int i; - if (rv == NULL) - return (ENXIO); + if (res == NULL) + return; - *cdev = make_dev(&gpdma_cdevsw, - 0, - UID_ROOT, - GID_WHEEL, - 0600, - "%s.%d", - device_get_nameunit(gpdma->de_dev), - (int)rman_get_start(rv)); + for (i = 0; i < nch; i++) { + cdev = make_dev(&gpdma_cdevsw, + 0, + UID_ROOT, + GID_WHEEL, + 0600, + "%s.%d", + device_get_nameunit(rman_get_device(res[i])), + (int)rman_get_start(res[i])); - dcs = malloc(sizeof(*dcs), M_GPDMA, M_WAITOK); - mtx_init(&dcs->dcs_mtx, "dcsmtx", "gpdma", MTX_DEF); - dcs->dcs_engine = gpdma; - dcs->dcs_state = DCS_CLOSED; - dcs->dcs_res = rv; - dcs->dcs_xfer = gpdma_alloc_transfer(rv); + dcs = malloc(sizeof(*dcs), M_GPDMA, M_WAITOK); + mtx_init(&dcs->dcs_mtx, "dcsmtx", "gpdma", MTX_DEF); + dcs->dcs_state = DCS_CLOSED; + dcs->dcs_res = res[i]; + dcs->dcs_xfer = gpdma_alloc_transfer(res[i]); - (*cdev)->si_drv1 = dcs; - - return (0); + cdev->si_drv1 = dcs; + } } ==== //depot/projects/soc2010/jceel_dma/sys/dev/gpdma/gpdma_cdev.h#2 (text+ko) ==== @@ -28,6 +28,7 @@ #ifndef _SYS_DEV_GPDMA_GPDMA_CDEV_H #define _SYS_DEV_GPDMA_GPDMA_CDEV_H +#include <sys/uio.h> #include <sys/ioccom.h> enum gpdma_cdev_buftype { @@ -61,7 +62,7 @@ #define GPDMA_IOCTL_GETCAPS _IOR('g', 1, struct gpdma_cdev_caps) #ifdef _KERNEL -int gpdma_make_cdev(struct gpdma_engine *, struct resource *, struct cdev **); +void gpdma_cdev_init(struct resource **, int, void *); #endif /* _KERNEL */ #endif /* _SYS_DEV_GPDMA_GPDMA_CDEV_H */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008140025.o7E0Pn22011492>