PERFORCE change 182377 for review

Jakub Wojciech Klama jceel at FreeBSD.org
Sat Aug 14 00:25:50 UTC 2010


http://p4web.freebsd.org/@@182377?ac=10

Change 182377 by jceel at 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 */


More information about the p4-projects mailing list