diff options
author | phk <phk@FreeBSD.org> | 2005-09-15 13:07:38 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2005-09-15 13:07:38 +0000 |
commit | 75ed14bc1f58fed47fa9deb5431524d11ba6a974 (patch) | |
tree | 5e8798be68f5caa6bf3f6e9dafc9fc0c67bd8719 /sys/dev/ieee488/upd7210.c | |
parent | 1666b7e18bdde618109af4cc878ea2c010bc27de (diff) | |
download | FreeBSD-src-75ed14bc1f58fed47fa9deb5431524d11ba6a974.zip FreeBSD-src-75ed14bc1f58fed47fa9deb5431524d11ba6a974.tar.gz |
Allocate unit numbers with unr, implement detach function.
Diffstat (limited to 'sys/dev/ieee488/upd7210.c')
-rw-r--r-- | sys/dev/ieee488/upd7210.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/sys/dev/ieee488/upd7210.c b/sys/dev/ieee488/upd7210.c index e4b50ac..69b8c0b 100644 --- a/sys/dev/ieee488/upd7210.c +++ b/sys/dev/ieee488/upd7210.c @@ -81,6 +81,7 @@ upd7210_rd(struct upd7210 *u, enum upd7210_rreg reg) void upd7210_wr(struct upd7210 *u, enum upd7210_wreg reg, u_int val) { + bus_space_write_1( u->reg_tag[reg], u->reg_handle[reg], @@ -271,21 +272,34 @@ static struct cdevsw gpib_l_cdevsw = { /* Housekeeping */ +static struct unrhdr *units; + void upd7210attach(struct upd7210 *u) { - int unit = 0; struct cdev *dev; + if (units == NULL) + units = new_unrhdr(0, minor2unit(MAXMINOR), NULL); + u->unit = alloc_unr(units); mtx_init(&u->mutex, "gpib", NULL, MTX_DEF); - u->cdev = make_dev(&gpib_l_cdevsw, unit, + u->cdev = make_dev(&gpib_l_cdevsw, u->unit, UID_ROOT, GID_WHEEL, 0444, - "gpib%ul", unit); + "gpib%ul", u->unit); u->cdev->si_drv1 = u; - dev = make_dev(&gpib_ib_cdevsw, unit, + dev = make_dev(&gpib_ib_cdevsw, u->unit, UID_ROOT, GID_WHEEL, 0444, - "gpib%uib", unit); + "gpib%uib", u->unit); dev->si_drv1 = u; dev_depends(u->cdev, dev); } + +void +upd7210detach(struct upd7210 *u) +{ + + destroy_dev(u->cdev); + mtx_destroy(&u->mutex); + free_unr(units, u->unit); +} |