usb4bsd: Port ufm.
authorSascha Wildner <saw@online.de>
Sun, 16 Mar 2014 17:49:38 +0000 (18:49 +0100)
committerSascha Wildner <saw@online.de>
Sun, 16 Mar 2014 17:49:38 +0000 (18:49 +0100)
Makefile_upgrade.inc
share/man/man4/ufm.4
share/man/man4/usb.4
sys/bus/u4b/Makefile
sys/bus/u4b/misc/Makefile [new file with mode: 0644]
sys/bus/u4b/misc/ufm.c
sys/bus/u4b/misc/ufm/Makefile [new file with mode: 0644]
sys/conf/files
sys/config/LINT
sys/config/LINT64

index 68e3d76..e5ceed9 100644 (file)
@@ -2569,7 +2569,6 @@ TO_REMOVE+=/boot/kernel/if_rue.ko
 TO_REMOVE+=/boot/kernel/moscom.ko
 TO_REMOVE+=/boot/kernel/snd_uaudio.ko
 TO_REMOVE+=/boot/kernel/ubt.ko
-TO_REMOVE+=/boot/kernel/ufm.ko
 TO_REMOVE+=/boot/kernel/ugen.ko
 TO_REMOVE+=/boot/kernel/uscanner.ko
 TO_REMOVE+=/boot/kernel/uticom.ko
index 80ce924..3769441 100644 (file)
 .\"    notice, this list of conditions and the following disclaimer in the
 .\"    documentation and/or other materials provided with the distribution.
 .\"
-.\" THIS SOFTWARE IS PROVIDED BY FREEBSD AND CONTRIBUTORS ``AS IS'' AND
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL NICK HIBMA OR THE VOICES IN HIS HEAD
-.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-.\" THE POSSIBILITY OF SUCH DAMAGE.
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man4/ufm.4,v 1.5 2005/02/09 18:07:16 ru Exp $
+.\" $FreeBSD: head/share/man/man4/ufm.4 204790 2010-03-06 05:57:24Z joel $
 .\"
-.Dd November 7, 2003
+.Dd March 16, 2014
 .Dt UFM 4
 .Os
 .Sh NAME
 .Nm ufm
 .Nd USB driver for Cypress Semiconductor FM Radio
 .Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
 .Cd "device ufm"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ufm_load="YES"
+.Ed
 .Sh DESCRIPTION
 The
 .Nm
index 9b6c77f..50c9b3c 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: head/share/man/man4/usb.4 258618 2013-11-26 07:52:40Z lwhsu $
 .\"
-.Dd March 15, 2014
+.Dd March 16, 2014
 .Dt USB 4
 .Os
 .Sh NAME
@@ -178,11 +178,11 @@ SUNTAC Slipper U VS-10U serial adapters
 .\".It Xr urio 4
 .\"driver for the Rio500 MP3 player
 .\".El
-.\".Ss Radio receiver devices
-.\".Bl -tag -width ".Xr snd_uaudio 4" -offset indent -compact
-.\".It Xr ufm 4
-.\"Cypress Semiconductor FM Radio
-.\".El
+.Ss Radio receiver devices
+.Bl -tag -width ".Xr snd_uaudio 4" -offset indent -compact
+.It Xr ufm 4
+Cypress Semiconductor FM Radio
+.El
 .Ss Human Interface Devices
 .Bl -tag -width ".Xr snd_uaudio 4" -offset indent -compact
 .It Xr uep 4
index 677e6cb..6980e7d 100644 (file)
@@ -1,5 +1,5 @@
-#SUBDIR=       misc template
+#SUBDIR=       template
 
-SUBDIR=        usb audio controller input net quirk serial storage wlan
+SUBDIR=        usb audio controller input misc net quirk serial storage wlan
 
 .include <bsd.subdir.mk>
diff --git a/sys/bus/u4b/misc/Makefile b/sys/bus/u4b/misc/Makefile
new file mode 100644 (file)
index 0000000..c7644fb
--- /dev/null
@@ -0,0 +1,3 @@
+SUBDIR=        ufm
+
+.include <bsd.subdir.mk>
index 500c343..432bba5 100644 (file)
  * its contributors.
  */
 
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-
 #include <sys/stdint.h>
-#include <sys/stddef.h>
 #include <sys/param.h>
 #include <sys/queue.h>
 #include <sys/types.h>
@@ -42,10 +37,8 @@ __FBSDID("$FreeBSD$");
 #include <sys/bus.h>
 #include <sys/module.h>
 #include <sys/lock.h>
-#include <sys/mutex.h>
 #include <sys/condvar.h>
 #include <sys/sysctl.h>
-#include <sys/sx.h>
 #include <sys/unistd.h>
 #include <sys/callout.h>
 #include <sys/malloc.h>
@@ -53,14 +46,14 @@ __FBSDID("$FreeBSD$");
 #include <sys/conf.h>
 #include <sys/fcntl.h>
 
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
+#include <bus/u4b/usb.h>
+#include <bus/u4b/usbdi.h>
 #include "usbdevs.h"
 
 #define        USB_DEBUG_VAR usb_debug
-#include <dev/usb/usb_debug.h>
+#include <bus/u4b/usb_debug.h>
 
-#include <dev/usb/ufm_ioctl.h>
+#include <bus/u4b/ufm_ioctl.h>
 
 #define        UFM_CMD0                0x00
 #define        UFM_CMD_SET_FREQ        0x01
@@ -68,7 +61,7 @@ __FBSDID("$FreeBSD$");
 
 struct ufm_softc {
        struct usb_fifo_sc sc_fifo;
-       struct mtx sc_mtx;
+       struct lock sc_lock;
 
        struct usb_device *sc_udev;
 
@@ -147,14 +140,14 @@ ufm_attach(device_t dev)
        sc->sc_udev = uaa->device;
        sc->sc_unit = device_get_unit(dev);
 
-       snprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
+       ksnprintf(sc->sc_name, sizeof(sc->sc_name), "%s",
            device_get_nameunit(dev));
 
-       mtx_init(&sc->sc_mtx, "ufm lock", NULL, MTX_DEF | MTX_RECURSE);
+       lockinit(&sc->sc_lock, "ufm lock", 0, LK_CANRECURSE);
 
        device_set_usb_desc(dev);
 
-       error = usb_fifo_attach(uaa->device, sc, &sc->sc_mtx,
+       error = usb_fifo_attach(uaa->device, sc, &sc->sc_lock,
            &ufm_fifo_methods, &sc->sc_fifo,
            device_get_unit(dev), 0 - 1, uaa->info.bIfaceIndex,
            UID_ROOT, GID_OPERATOR, 0644);
@@ -175,7 +168,7 @@ ufm_detach(device_t dev)
 
        usb_fifo_detach(&sc->sc_fifo);
 
-       mtx_destroy(&sc->sc_mtx);
+       lockuninit(&sc->sc_lock);
 
        return (0);
 }
@@ -218,9 +211,9 @@ ufm_set_freq(struct ufm_softc *sc, void *addr)
         * units of 12.5kHz.  We add one to the IFM to make rounding
         * easier.
         */
-       mtx_lock(&sc->sc_mtx);
+       lockmgr(&sc->sc_lock, LK_EXCLUSIVE);
        sc->sc_freq = freq;
-       mtx_unlock(&sc->sc_mtx);
+       lockmgr(&sc->sc_lock, LK_RELEASE);
 
        freq = (freq + 10700001) / 12500;
 
@@ -242,9 +235,9 @@ ufm_get_freq(struct ufm_softc *sc, void *addr)
 {
        int *valp = (int *)addr;
 
-       mtx_lock(&sc->sc_mtx);
+       lockmgr(&sc->sc_lock, LK_EXCLUSIVE);
        *valp = sc->sc_freq;
-       mtx_unlock(&sc->sc_mtx);
+       lockmgr(&sc->sc_lock, LK_RELEASE);
        return (0);
 }
 
diff --git a/sys/bus/u4b/misc/ufm/Makefile b/sys/bus/u4b/misc/ufm/Makefile
new file mode 100644 (file)
index 0000000..a4d24a9
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# $FreeBSD: head/sys/modules/usb/ufm/Makefile 188943 2009-02-23 18:32:59Z thompsa $
+#
+# Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+
+.PATH: ${.CURDIR}/..
+
+KMOD=  ufm
+SRCS=  opt_bus.h opt_usb.h device_if.h bus_if.h usb_if.h usbdevs.h ufm.c
+
+.include <bsd.kmod.mk>
index ef00c1c..2dfb9cd 100644 (file)
@@ -2536,6 +2536,10 @@ bus/u4b/serial/uslcom.c                  optional uslcom ucom usb
 bus/u4b/serial/uvisor.c                        optional uvisor ucom usb
 bus/u4b/serial/uvscom.c                        optional uvscom ucom usb
 #
+# USB misc drivers
+#
+bus/u4b/misc/ufm.c                     optional ufm usb
+#
 # USB input drivers
 #
 bus/u4b/input/ukbd.c                   optional ukbd usb
index 9ed3c05..b229e5b 100644 (file)
@@ -2158,8 +2158,6 @@ device          mly
 #
 # USB Bluetooth (oldusb)
 #device                ubt
-# Fm Radio (oldusb)
-#device                ufm
 # Generic USB device driver (oldusb)
 #device                ugen
 # USB Rio (MP3 Player) (oldusb)
@@ -2276,6 +2274,10 @@ device           runfw
 device         urtwn
 device         urtwnfw
 
+# Fm Radio
+#
+device         ufm
+
 # debugging options for the USB subsystem
 #
 options        USB_DEBUG
index fe9f50c..88e0ebd 100644 (file)
@@ -1994,8 +1994,6 @@ device          mly
 #
 # USB Bluetooth (oldusb)
 #device                ubt
-# Fm Radio (oldusb)
-#device                ufm
 # Generic USB device driver (oldusb)
 #device                ugen
 # USB Rio (MP3 Player) (oldusb)
@@ -2112,6 +2110,10 @@ device           runfw
 device         urtwn
 device         urtwnfw
 
+# Fm Radio
+#
+device         ufm
+
 # debugging options for the USB subsystem
 #
 options        USB_DEBUG