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