Author: rpaulo
Date: Mon Dec  1 19:48:23 2014
New Revision: 275376
URL: https://svnweb.freebsd.org/changeset/base/275376

Log:
  Allow multiple devices to mmap.  It's impossible to prevent this with
  checks on the open/close functions.
  
  MFC after:    1 week

Modified:
  head/sys/arm/ti/ti_pruss.c

Modified: head/sys/arm/ti/ti_pruss.c
==============================================================================
--- head/sys/arm/ti/ti_pruss.c  Mon Dec  1 19:39:38 2014        (r275375)
+++ head/sys/arm/ti/ti_pruss.c  Mon Dec  1 19:48:23 2014        (r275376)
@@ -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);
 }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to