summaryrefslogtreecommitdiffstats
path: root/sys/arm/ti/ti_pruss.c
diff options
context:
space:
mode:
authorrpaulo <rpaulo@FreeBSD.org>2014-12-01 19:48:23 +0000
committerrpaulo <rpaulo@FreeBSD.org>2014-12-01 19:48:23 +0000
commit52b859da5fc3d395ad5479a9df0a9c5707883ca7 (patch)
treefdfd5cff44afa37b282e6996d41b030205e457ba /sys/arm/ti/ti_pruss.c
parent645c5190d6e63066ccbd4c603f9cbf602351ae9a (diff)
downloadFreeBSD-src-52b859da5fc3d395ad5479a9df0a9c5707883ca7.zip
FreeBSD-src-52b859da5fc3d395ad5479a9df0a9c5707883ca7.tar.gz
Allow multiple devices to mmap. It's impossible to prevent this with
checks on the open/close functions. MFC after: 1 week
Diffstat (limited to 'sys/arm/ti/ti_pruss.c')
-rw-r--r--sys/arm/ti/ti_pruss.c31
1 files changed, 6 insertions, 25 deletions
diff --git a/sys/arm/ti/ti_pruss.c b/sys/arm/ti/ti_pruss.c
index f7f7fbd..55838d2 100644
--- a/sys/arm/ti/ti_pruss.c
+++ b/sys/arm/ti/ti_pruss.c
@@ -67,7 +67,6 @@ static device_attach_t ti_pruss_attach;
static device_detach_t ti_pruss_detach;
static void ti_pruss_intr(void *);
static d_open_t ti_pruss_open;
-static d_close_t ti_pruss_close;
static d_mmap_t ti_pruss_mmap;
static void ti_pruss_kq_read_detach(struct knote *);
static int ti_pruss_kq_read_event(struct knote *, long);
@@ -83,14 +82,12 @@ struct ti_pruss_softc {
bus_space_handle_t sc_bh;
struct cdev *sc_pdev;
struct selinfo sc_selinfo;
- uint32_t sc_inuse;
};
static struct cdevsw ti_pruss_cdevsw = {
.d_version = D_VERSION,
.d_name = "ti_pruss",
.d_open = ti_pruss_open,
- .d_close = ti_pruss_close,
.d_mmap = ti_pruss_mmap,
.d_kqfilter = ti_pruss_kqfilter,
};
@@ -187,11 +184,11 @@ ti_pruss_attach(device_t dev)
for (i = 0; i < TI_PRUSS_IRQS; i++) {
ti_pruss_irq_args[i].irq = i;
ti_pruss_irq_args[i].sc = sc;
- if (bus_setup_intr(dev, sc->sc_irq_res[i],
+ if (bus_setup_intr(dev, sc->sc_irq_res[i],
INTR_MPSAFE | INTR_TYPE_MISC,
- NULL, ti_pruss_intr, &ti_pruss_irq_args[i],
+ NULL, ti_pruss_intr, &ti_pruss_irq_args[i],
&sc->sc_intr[i]) != 0) {
- device_printf(dev,
+ device_printf(dev,
"unable to setup the interrupt handler\n");
ti_pruss_detach(dev);
return (ENXIO);
@@ -220,7 +217,7 @@ ti_pruss_detach(device_t dev)
if (sc->sc_intr[i])
bus_teardown_intr(dev, sc->sc_irq_res[i], sc->sc_intr[i]);
if (sc->sc_irq_res[i])
- bus_release_resource(dev, SYS_RES_IRQ,
+ bus_release_resource(dev, SYS_RES_IRQ,
rman_get_rid(sc->sc_irq_res[i]),
sc->sc_irq_res[i]);
}
@@ -246,25 +243,9 @@ ti_pruss_intr(void *arg)
}
static int
-ti_pruss_open(struct cdev *cdev, int oflags, int devtype, struct thread *td)
+ti_pruss_open(struct cdev *cdev __unused, int oflags __unused,
+ int devtype __unused, struct thread *td __unused)
{
- device_t dev = cdev->si_drv1;
- struct ti_pruss_softc *sc = device_get_softc(dev);
-
- if (atomic_cmpset_32(&sc->sc_inuse, 0, 1) == 0)
- return (EBUSY);
- else
- return (0);
-}
-
-static int
-ti_pruss_close(struct cdev *cdev, int fflag, int devtype, struct thread *td)
-{
- device_t dev = cdev->si_drv1;
- struct ti_pruss_softc *sc = device_get_softc(dev);
-
- sc->sc_inuse = 0;
-
return (0);
}
OpenPOWER on IntegriCloud