PERFORCE change 139632 for review

Sam Leffler sam at FreeBSD.org
Wed Apr 9 05:37:26 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=139632

Change 139632 by sam at sam_ebb on 2008/04/09 05:36:24

	IFC @ 139631

Affected files ...

.. //depot/projects/vap/UPDATING#7 integrate
.. //depot/projects/vap/etc/defaults/rc.conf#9 integrate
.. //depot/projects/vap/etc/rc.d/Makefile#5 integrate
.. //depot/projects/vap/etc/rc.d/rfcomm_pppd_server#1 branch
.. //depot/projects/vap/etc/rc.d/wpa_supplicant#6 integrate
.. //depot/projects/vap/share/man/man4/psm.4#3 integrate
.. //depot/projects/vap/share/man/man5/rc.conf.5#7 integrate
.. //depot/projects/vap/sys/dev/atkbdc/psm.c#4 integrate
.. //depot/projects/vap/sys/ia64/ia64/sscdisk.c#6 integrate
.. //depot/projects/vap/sys/kern/subr_taskqueue.c#8 integrate
.. //depot/projects/vap/sys/kern/vfs_mount.c#12 integrate
.. //depot/projects/vap/sys/netinet/ip_input.c#7 integrate
.. //depot/projects/vap/sys/netinet/ip_ipsec.c#4 integrate
.. //depot/projects/vap/sys/netinet/ip_ipsec.h#3 integrate
.. //depot/projects/vap/sys/powerpc/include/atomic.h#8 integrate
.. //depot/projects/vap/sys/sys/eventhandler.h#7 integrate
.. //depot/projects/vap/sys/sys/kernel.h#9 integrate
.. //depot/projects/vap/sys/sys/param.h#16 integrate
.. //depot/projects/vap/usr.sbin/sysinstall/menus.c#5 integrate

Differences ...

==== //depot/projects/vap/UPDATING#7 (text+ko) ====

@@ -22,6 +22,13 @@
 	to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20080408:
+	psm(4) has gained write(2) support in native operation level.
+	Arbitrary commands can be written to /dev/psm%d and status can
+	be read back from it.  Therefore, an application is responsible
+	for status validation and error recovery.  It is a no-op in
+	other operation levels.
+
 20080312:
 	Support for KSE threading has been removed from the kernel.  To
 	run legacy applications linked against KSE libmap.conf may
@@ -1007,4 +1014,4 @@
 Contact Warner Losh if you have any questions about your use of
 this document.
 
-$FreeBSD: src/UPDATING,v 1.523 2008/03/12 09:48:42 jeff Exp $
+$FreeBSD: src/UPDATING,v 1.524 2008/04/08 17:55:25 jkim Exp $

==== //depot/projects/vap/etc/defaults/rc.conf#9 (text+ko) ====

@@ -15,7 +15,7 @@
 # For a more detailed explanation of all the rc.conf variables, please
 # refer to the rc.conf(5) manual page.
 #
-# $FreeBSD: src/etc/defaults/rc.conf,v 1.328 2008/03/06 14:01:10 mtm Exp $
+# $FreeBSD: src/etc/defaults/rc.conf,v 1.330 2008/04/08 23:50:03 emax Exp $
 
 ##############################################################
 ###  Important initial Boot-time options  ####################
@@ -384,6 +384,19 @@
 bthidd_config="/etc/bluetooth/bthidd.conf" # bthidd(8) configuration file
 bthidd_hids="/var/db/bthidd.hids" # bthidd(8) known HID devices file
 
+rfcomm_pppd_server_enable="NO"	# Enable rfcomm_pppd(8) in server mode (or NO)
+rfcomm_pppd_server_profile="one two"	# Profile to use from /etc/ppp/ppp.conf
+#
+#rfcomm_pppd_server_one_bdaddr=""	# Override local bdaddr for 'one'
+rfcomm_pppd_server_one_channel="1"	# Override local channel for 'one'
+#rfcomm_pppd_server_one_register_sp="NO"	# Override SP and DUN register
+#rfcomm_pppd_server_one_register_dun="NO"	# for 'one'
+#
+#rfcomm_pppd_server_two_bdaddr=""	# Override local bdaddr for 'two'
+rfcomm_pppd_server_two_channel="3"	# Override local channel for 'two'
+#rfcomm_pppd_server_two_register_sp="NO"	# Override SP and DUN register
+#rfcomm_pppd_server_two_register_dun="NO"	# for 'two'
+
 ### Miscellaneous network options: ###
 icmp_bmcastecho="NO"	# respond to broadcast ping packets
 

==== //depot/projects/vap/etc/rc.d/Makefile#5 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/etc/rc.d/Makefile,v 1.89 2008/03/05 18:32:58 brooks Exp $
+# $FreeBSD: src/etc/rc.d/Makefile,v 1.90 2008/04/08 23:34:12 emax Exp $
 
 .include <bsd.own.mk>
 
@@ -29,7 +29,7 @@
 	pf pflog pfsync \
 	powerd power_profile ppp pppoed pwcheck \
 	quota \
-	random rarpd resolv root \
+	random rarpd resolv rfcomm_pppd_server root \
 	route6d routed routing rpcbind rtadvd rwho \
 	savecore sdpd securelevel sendmail \
 	serial sppp statd swap1 \

==== //depot/projects/vap/etc/rc.d/wpa_supplicant#6 (text+ko) ====

@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $FreeBSD: src/etc/rc.d/wpa_supplicant,v 1.2 2005/10/19 22:26:47 jkim Exp $
+# $FreeBSD: src/etc/rc.d/wpa_supplicant,v 1.5 2008/04/08 23:12:15 sam Exp $
 #
 
 # PROVIDE: wpa_supplicant
@@ -20,15 +20,14 @@
 
 is_wired_interface()
 {
-	media=
-	ifconfig $1 2>/dev/null | while read line; do
+	media=`ifconfig $1 2>/dev/null | while read line; do
 		case "$line" in
-		*media:*Ethernet*)
-			media="Ethernet"
+		*media:?Ethernet*)
+			echo Ethernet
 			;;
 		esac
-	done
-	test -z "$media"
+	done`
+	test "$media" = "Ethernet"
 }
 
 case ${ifn} in
@@ -49,7 +48,7 @@
 command=${wpa_supplicant_program}
 conf_file=${wpa_supplicant_conf_file}
 pidfile="/var/run/${name}/${ifn}.pid"
-command_args="-B ${wpa_supplicant_flags} -i $ifn -c $conf_file -D $driver -P $pidfile"
+command_args="-B -i $ifn -c $conf_file -D $driver -P $pidfile"
 required_files=$conf_file
 
 run_rc_command "$1"

==== //depot/projects/vap/share/man/man4/psm.4#3 (text+ko) ====

@@ -24,9 +24,9 @@
 .\" (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/psm.4,v 1.48 2005/07/15 17:35:25 hrs Exp $
+.\" $FreeBSD: src/share/man/man4/psm.4,v 1.49 2008/04/08 17:55:25 jkim Exp $
 .\"
-.Dd September 29, 2004
+.Dd April 8, 2008
 .Dt PSM 4
 .Os
 .Sh NAME
@@ -110,7 +110,9 @@
 8 byte data packets are sent to the user program at this level.
 .Pp
 At the operation level two, data from the pointing device is passed to the
-user program as is.
+user program as is. Conversely, command from the user program is passed
+to the pointing device as is and the user program is responsible for
+status validation and error recovery.
 Modern PS/2 type pointing devices often use proprietary data format.
 Therefore, the user program is expected to have
 intimate knowledge about the format from a particular device when operating

==== //depot/projects/vap/share/man/man5/rc.conf.5#7 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.337 2008/03/28 07:57:52 brooks Exp $
+.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.338 2008/04/08 23:34:12 emax Exp $
 .\"
 .Dd January 27, 2008
 .Dt RC.CONF 5
@@ -3880,6 +3880,108 @@
 If set to
 .Dq Li YES ,
 enable support for sound mixer.
+.It Va hcsecd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth security daemon.
+.It Va hcsecd_config
+.Pq Vt str
+Configuration file for
+.Xr hcsecd 8 .
+Default
+.Pa /etc/bluetooth/hcsecd.conf .
+.It Va sdpd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth Service Discovery Protocol daemon.
+.It Va sdpd_control
+.Pq Vt str
+Path to
+.Xr sdpd 8
+control socket.
+Default
+.Pa /var/run/sdp .
+.It Va sdpd_groupname
+.Pq Vt str
+Sets
+.Xr sdpd 8
+group to run as after it initializes.
+Default
+.Dq Li nobody .
+.It Va sdpd_username
+.Pq Vt str
+Sets
+.Xr sdpd 8
+user to run as after it initializes.
+Default
+.Dq Li nobody .
+.It Va bthidd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth Human Interface Device daemon.
+.It Va bthidd_config
+.Pq Vt str
+Configuration file for
+.Xr bthidd 8 .
+Default
+.Pa /etc/bluetooth/bthidd.conf .
+.It Va bthidd_hids
+.Pq Vt str
+Path to a file, where
+.Xr bthidd 8 
+will store information about known HID devices.
+Default
+.Pa /var/db/bthidd.hids .
+.It Va rfcomm_pppd_server_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth RFCOMM PPP wrapper daemon.
+.It Va rfcomm_pppd_server_profile
+.Pq Vt str
+The name of the profile to use from
+.Pa /etc/ppp/ppp.conf .
+Multiple profiles can be specified here.
+Also used to specify per-profile overrides.
+When the profile name contains any of the characters
+.Dq Li .-/+
+they are translated to
+.Dq Li _
+for the proposes of the override variable names.
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _bdaddr
+.Pq Vt str
+Overrides local address to listen on.
+By default
+.Xr rfcomm_pppd 8
+will listen on
+.Dq Li ANY
+address.
+The address can be specified as BD_ADDR or name.
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _channel
+.Pq Vt str
+Overrides local RFCOMM channel to listen on.
+By default
+.Xr rfcomm_pppd 8
+will listen on RFCOMM channel 1.
+Must set properly if multiple profiles used in the same time.
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _register_sp
+.Pq Vt bool
+Tells
+.Xr rfcomm_pppd 8
+if it should register Serial Port service on the speficied RFCOMM channel.
+Default
+.Dq Li NO .
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _register_dun
+.Pq Vt bool
+Tells
+.Xr rfcomm_pppd 8
+if it should register Dial-Up Networking service on the speficied
+RFCOMM channel.
+Default
+.Dq Li NO .
 .El
 .Sh FILES
 .Bl -tag -width ".Pa /etc/defaults/rc.conf" -compact
@@ -3920,12 +4022,14 @@
 .Xr amd 8 ,
 .Xr apm 8 ,
 .Xr atm 8 ,
+.Xr bthidd 8 ,
 .Xr chkprintcap 8 ,
 .Xr chown 8 ,
 .Xr cron 8 ,
 .Xr dhclient 8 ,
 .Xr ftpd 8 ,
 .Xr geli 8 ,
+.Xr hcsecd 8 ,
 .Xr ifconfig 8 ,
 .Xr inetd 8 ,
 .Xr ipf 8 ,
@@ -3955,6 +4059,7 @@
 .Xr quotaon 8 ,
 .Xr rc 8 ,
 .Xr rc.sendmail 8 ,
+.Xr rfcomm_pppd 8 ,
 .Xr route 8 ,
 .Xr routed 8 ,
 .Xr rpcbind 8 ,
@@ -3962,6 +4067,7 @@
 .Xr rpc.statd 8 ,
 .Xr rwhod 8 ,
 .Xr savecore 8 ,
+.Xr sdpd 8 ,
 .Xr sshd 8 ,
 .Xr swapon 8 ,
 .Xr sysctl 8 ,

==== //depot/projects/vap/sys/dev/atkbdc/psm.c#4 (text+ko) ====

@@ -50,16 +50,16 @@
  *  - 12 November 1996. IOCTLs and rearranging `psmread', `psmioctl'...
  *  - 14, 30 November 1996. Uses `kbdio.c'.
  *  - 13 December 1996. Uses queuing version of `kbdio.c'.
- *  - January/February 1997. Tweaked probe logic for 
+ *  - January/February 1997. Tweaked probe logic for
  *    HiNote UltraII/Latitude/Armada laptops.
  *  - 30 July 1997. Added APM support.
- *  - 5 March 1997. Defined driver configuration flags (PSM_CONFIG_XXX). 
+ *  - 5 March 1997. Defined driver configuration flags (PSM_CONFIG_XXX).
  *    Improved sync check logic.
  *    Vendor specific support routines.
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/atkbdc/psm.c,v 1.94 2008/02/25 13:57:18 rink Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/atkbdc/psm.c,v 1.96 2008/04/08 19:09:45 jkim Exp $");
 
 #include "opt_isa.h"
 #include "opt_psm.h"
@@ -97,158 +97,159 @@
 
 /* debugging */
 #ifndef PSM_DEBUG
-#define PSM_DEBUG	0	/*
+#define	PSM_DEBUG	0	/*
 				 * logging: 0: none, 1: brief, 2: verbose
 				 *          3: sync errors, 4: all packets
 				 */
 #endif
-#define VLOG(level, args) 	\
-do {				\
-	if (verbose >= level)	\
-		log args;	\
+#define	VLOG(level, args)	do {	\
+	if (verbose >= level)		\
+		log args;		\
 } while (0)
 
 #ifndef PSM_INPUT_TIMEOUT
-#define PSM_INPUT_TIMEOUT	2000000	/* 2 sec */
+#define	PSM_INPUT_TIMEOUT	2000000	/* 2 sec */
 #endif
 
 #ifndef PSM_TAP_TIMEOUT
-#define PSM_TAP_TIMEOUT		125000
+#define	PSM_TAP_TIMEOUT		125000
 #endif
 
 #ifndef PSM_TAP_THRESHOLD
-#define PSM_TAP_THRESHOLD	25
+#define	PSM_TAP_THRESHOLD	25
 #endif
 
 /* end of driver specific options */
 
-#define PSMCPNP_DRIVER_NAME	"psmcpnp"
+#define	PSMCPNP_DRIVER_NAME	"psmcpnp"
 
 /* input queue */
-#define PSM_BUFSIZE		960
-#define PSM_SMALLBUFSIZE	240
+#define	PSM_BUFSIZE		960
+#define	PSM_SMALLBUFSIZE	240
 
 /* operation levels */
-#define PSM_LEVEL_BASE		0
-#define PSM_LEVEL_STANDARD	1
-#define PSM_LEVEL_NATIVE	2
-#define PSM_LEVEL_MIN		PSM_LEVEL_BASE
-#define PSM_LEVEL_MAX		PSM_LEVEL_NATIVE
+#define	PSM_LEVEL_BASE		0
+#define	PSM_LEVEL_STANDARD	1
+#define	PSM_LEVEL_NATIVE	2
+#define	PSM_LEVEL_MIN		PSM_LEVEL_BASE
+#define	PSM_LEVEL_MAX		PSM_LEVEL_NATIVE
 
 /* Logitech PS2++ protocol */
-#define MOUSE_PS2PLUS_CHECKBITS(b)	\
-				((((b[2] & 0x03) << 2) | 0x02) == (b[1] & 0x0f))
-#define MOUSE_PS2PLUS_PACKET_TYPE(b)	\
-				(((b[0] & 0x30) >> 2) | ((b[1] & 0x30) >> 4))
+#define	MOUSE_PS2PLUS_CHECKBITS(b)	\
+    ((((b[2] & 0x03) << 2) | 0x02) == (b[1] & 0x0f))
+#define	MOUSE_PS2PLUS_PACKET_TYPE(b)	\
+    (((b[0] & 0x30) >> 2) | ((b[1] & 0x30) >> 4))
 
 /* some macros */
-#define PSM_UNIT(dev)		(minor(dev) >> 1)
-#define PSM_NBLOCKIO(dev)	(minor(dev) & 1)
-#define PSM_MKMINOR(unit,block)	(((unit) << 1) | ((block) ? 0:1))
+#define	PSM_UNIT(dev)		(minor(dev) >> 1)
+#define	PSM_NBLOCKIO(dev)	(minor(dev) & 1)
+#define	PSM_MKMINOR(unit,block)	(((unit) << 1) | ((block) ? 0:1))
 
 /* ring buffer */
 typedef struct ringbuf {
-    int           count;	/* # of valid elements in the buffer */
-    int           head;		/* head pointer */
-    int           tail;		/* tail poiner */
-    unsigned char buf[PSM_BUFSIZE];
+	int		count;	/* # of valid elements in the buffer */
+	int		head;	/* head pointer */
+	int		tail;	/* tail poiner */
+	u_char buf[PSM_BUFSIZE];
 } ringbuf_t;
 
 /* data buffer */
 typedef struct packetbuf {
-    unsigned char ipacket[16];	/* interim input buffer */
-    int           inputbytes;	/* # of bytes in the input buffer */
+	u_char	ipacket[16];	/* interim input buffer */
+	int	inputbytes;	/* # of bytes in the input buffer */
 } packetbuf_t;
 
 #ifndef PSM_PACKETQUEUE
-#define PSM_PACKETQUEUE	128
+#define	PSM_PACKETQUEUE	128
 #endif
 
 typedef struct synapticsinfo {
-    struct sysctl_ctx_list	sysctl_ctx;
-    struct sysctl_oid		*sysctl_tree;
-    int				directional_scrolls; 
-    int				low_speed_threshold; 
-    int				min_movement; 
-    int				squelch_level; 
+	struct sysctl_ctx_list	sysctl_ctx;
+	struct sysctl_oid	*sysctl_tree;
+	int			directional_scrolls;
+	int			low_speed_threshold;
+	int			min_movement;
+	int			squelch_level;
 } synapticsinfo_t;
 
 /* driver control block */
 struct psm_softc {		/* Driver status information */
-    int		  unit;
-    struct selinfo rsel;	/* Process selecting for Input */
-    unsigned char state;	/* Mouse driver state */
-    int           config;	/* driver configuration flags */
-    int           flags;	/* other flags */
-    KBDC          kbdc;		/* handle to access the keyboard controller */
-    struct resource *intr;	/* IRQ resource */
-    void	  *ih;		/* interrupt handle */
-    mousehw_t     hw;		/* hardware information */
-    synapticshw_t synhw;	/* Synaptics-specific hardware information */
-    synapticsinfo_t syninfo;	/* Synaptics-specific configuration */
-    mousemode_t   mode;		/* operation mode */
-    mousemode_t   dflt_mode;	/* default operation mode */
-    mousestatus_t status;	/* accumulated mouse movement */
-    ringbuf_t     queue;	/* mouse status queue */
-    packetbuf_t   pqueue[PSM_PACKETQUEUE];	/* mouse data queue */
-    int           pqueue_start; /* start of data in queue */
-    int           pqueue_end;   /* end of data in queue */
-    int           button;	/* the latest button state */
-    int		  xold;		/* previous absolute X position */
-    int		  yold;		/* previous absolute Y position */
-    int		  xaverage;	/* average X position */
-    int		  yaverage;	/* average Y position */
-    int		  squelch;	/* level to filter movement data at low speed */
-    int		  zmax;		/* maximum pressure value for touchpads */
-    int		  syncerrors;	/* # of bytes discarded searching for sync */
-    int		  pkterrors;	/* # of packets failed during quaranteen. */
-    struct timeval inputtimeout;
-    struct timeval lastsoftintr;	/* time of last soft interrupt */
-    struct timeval lastinputerr;	/* time last sync error happened */
-    struct timeval taptimeout;		/* tap timeout for touchpads */
-    int		  watchdog;		/* watchdog timer flag */
-    struct callout_handle callout;	/* watchdog timer call out */
-    struct callout_handle softcallout;	/* buffer timer call out */
-    struct cdev *dev;
-    struct cdev *bdev;
-    int           lasterr;
-    int           cmdcount;
+	int		unit;
+	struct selinfo	rsel;		/* Process selecting for Input */
+	u_char		state;		/* Mouse driver state */
+	int		config;		/* driver configuration flags */
+	int		flags;		/* other flags */
+	KBDC		kbdc;		/* handle to access kbd controller */
+	struct resource	*intr;		/* IRQ resource */
+	void		*ih;		/* interrupt handle */
+	mousehw_t	hw;		/* hardware information */
+	synapticshw_t	synhw;		/* Synaptics hardware information */
+	synapticsinfo_t	syninfo;	/* Synaptics configuration */
+	mousemode_t	mode;		/* operation mode */
+	mousemode_t	dflt_mode;	/* default operation mode */
+	mousestatus_t	status;		/* accumulated mouse movement */
+	ringbuf_t	queue;		/* mouse status queue */
+	packetbuf_t	pqueue[PSM_PACKETQUEUE]; /* mouse data queue */
+	int		pqueue_start;	/* start of data in queue */
+	int		pqueue_end;	/* end of data in queue */
+	int		button;		/* the latest button state */
+	int		xold;		/* previous absolute X position */
+	int		yold;		/* previous absolute Y position */
+	int		xaverage;	/* average X position */
+	int		yaverage;	/* average Y position */
+	int		squelch; /* level to filter movement at low speed */
+	int		zmax;	/* maximum pressure value for touchpads */
+	int		syncerrors; /* # of bytes discarded to synchronize */
+	int		pkterrors;  /* # of packets failed during quaranteen. */
+	struct timeval	inputtimeout;
+	struct timeval	lastsoftintr;	/* time of last soft interrupt */
+	struct timeval	lastinputerr;	/* time last sync error happened */
+	struct timeval	taptimeout;	/* tap timeout for touchpads */
+	int		watchdog;	/* watchdog timer flag */
+	struct callout_handle callout;	/* watchdog timer call out */
+	struct callout_handle softcallout; /* buffer timer call out */
+	struct cdev	*dev;
+	struct cdev	*bdev;
+	int		lasterr;
+	int		cmdcount;
 };
 static devclass_t psm_devclass;
-#define PSM_SOFTC(unit)	((struct psm_softc*)devclass_get_softc(psm_devclass, unit))
+#define	PSM_SOFTC(unit)	\
+    ((struct psm_softc*)devclass_get_softc(psm_devclass, unit))
 
 /* driver state flags (state) */
-#define PSM_VALID		0x80
-#define PSM_OPEN		1	/* Device is open */
-#define PSM_ASLP		2	/* Waiting for mouse data */
-#define PSM_SOFTARMED		4	/* Software interrupt armed */
-#define PSM_NEED_SYNCBITS	8	/* Set syncbits using next data pkt */
+#define	PSM_VALID		0x80
+#define	PSM_OPEN		1	/* Device is open */
+#define	PSM_ASLP		2	/* Waiting for mouse data */
+#define	PSM_SOFTARMED		4	/* Software interrupt armed */
+#define	PSM_NEED_SYNCBITS	8	/* Set syncbits using next data pkt */
 
 /* driver configuration flags (config) */
-#define PSM_CONFIG_RESOLUTION	0x000f	/* resolution */
-#define PSM_CONFIG_ACCEL	0x00f0  /* acceleration factor */
-#define PSM_CONFIG_NOCHECKSYNC	0x0100  /* disable sync. test */
-#define PSM_CONFIG_NOIDPROBE	0x0200  /* disable mouse model probe */
-#define PSM_CONFIG_NORESET	0x0400  /* don't reset the mouse */
-#define PSM_CONFIG_FORCETAP	0x0800  /* assume `tap' action exists */
-#define PSM_CONFIG_IGNPORTERROR	0x1000  /* ignore error in aux port test */
-#define PSM_CONFIG_HOOKRESUME	0x2000	/* hook the system resume event */
-#define PSM_CONFIG_INITAFTERSUSPEND 0x4000 /* init the device at the resume event */
-#define PSM_CONFIG_SYNCHACK	0x8000 /* enable `out-of-sync' hack */
+#define	PSM_CONFIG_RESOLUTION	0x000f	/* resolution */
+#define	PSM_CONFIG_ACCEL	0x00f0  /* acceleration factor */
+#define	PSM_CONFIG_NOCHECKSYNC	0x0100  /* disable sync. test */
+#define	PSM_CONFIG_NOIDPROBE	0x0200  /* disable mouse model probe */
+#define	PSM_CONFIG_NORESET	0x0400  /* don't reset the mouse */
+#define	PSM_CONFIG_FORCETAP	0x0800  /* assume `tap' action exists */
+#define	PSM_CONFIG_IGNPORTERROR	0x1000  /* ignore error in aux port test */
+#define	PSM_CONFIG_HOOKRESUME	0x2000	/* hook the system resume event */
+#define	PSM_CONFIG_INITAFTERSUSPEND 0x4000 /* init the device at the resume event */
+#define	PSM_CONFIG_SYNCHACK	0x8000	/* enable `out-of-sync' hack */
 
-#define PSM_CONFIG_FLAGS	(PSM_CONFIG_RESOLUTION 		\
-				    | PSM_CONFIG_ACCEL		\
-				    | PSM_CONFIG_NOCHECKSYNC	\
-				    | PSM_CONFIG_SYNCHACK	\
-				    | PSM_CONFIG_NOIDPROBE	\
-				    | PSM_CONFIG_NORESET	\
-				    | PSM_CONFIG_FORCETAP	\
-				    | PSM_CONFIG_IGNPORTERROR	\
-				    | PSM_CONFIG_HOOKRESUME	\
-				    | PSM_CONFIG_INITAFTERSUSPEND)
+#define	PSM_CONFIG_FLAGS	\
+    (PSM_CONFIG_RESOLUTION |	\
+    PSM_CONFIG_ACCEL |		\
+    PSM_CONFIG_NOCHECKSYNC |	\
+    PSM_CONFIG_SYNCHACK |	\
+    PSM_CONFIG_NOIDPROBE |	\
+    PSM_CONFIG_NORESET |	\
+    PSM_CONFIG_FORCETAP |	\
+    PSM_CONFIG_IGNPORTERROR |	\
+    PSM_CONFIG_HOOKRESUME |	\
+    PSM_CONFIG_INITAFTERSUSPEND)
 
 /* other flags (flags) */
-#define PSM_FLAGS_FINGERDOWN	0x0001 /* VersaPad finger down */
+#define	PSM_FLAGS_FINGERDOWN	0x0001	/* VersaPad finger down */
 
 /* Tunables */
 static int synaptics_support = 0;
@@ -258,119 +259,129 @@
 TUNABLE_INT("debug.psm.loglevel", &verbose);
 
 /* for backward compatibility */
-#define OLD_MOUSE_GETHWINFO	_IOR('M', 1, old_mousehw_t)
-#define OLD_MOUSE_GETMODE	_IOR('M', 2, old_mousemode_t)
-#define OLD_MOUSE_SETMODE	_IOW('M', 3, old_mousemode_t)
+#define	OLD_MOUSE_GETHWINFO	_IOR('M', 1, old_mousehw_t)
+#define	OLD_MOUSE_GETMODE	_IOR('M', 2, old_mousemode_t)
+#define	OLD_MOUSE_SETMODE	_IOW('M', 3, old_mousemode_t)
 
 typedef struct old_mousehw {
-    int buttons;
-    int iftype;
-    int type;
-    int hwid;
+	int	buttons;
+	int	iftype;
+	int	type;
+	int	hwid;
 } old_mousehw_t;
 
 typedef struct old_mousemode {
-    int protocol;
-    int rate;
-    int resolution;
-    int accelfactor;
+	int	protocol;
+	int	rate;
+	int	resolution;
+	int	accelfactor;
 } old_mousemode_t;
 
 /* packet formatting function */
-typedef int packetfunc_t(struct psm_softc *, unsigned char *,
-			      int *, int, mousestatus_t *);
+typedef int	packetfunc_t(struct psm_softc *, u_char *, int *, int,
+    mousestatus_t *);
 
 /* function prototypes */
-static void psmidentify(driver_t *, device_t);
-static int psmprobe(device_t);
-static int psmattach(device_t);
-static int psmdetach(device_t);
-static int psmresume(device_t);
+static void	psmidentify(driver_t *, device_t);
+static int	psmprobe(device_t);
+static int	psmattach(device_t);
+static int	psmdetach(device_t);
+static int	psmresume(device_t);
 
-static d_open_t psmopen;
-static d_close_t psmclose;
-static d_read_t psmread;
-static d_ioctl_t psmioctl;
-static d_poll_t psmpoll;
+static d_open_t		psmopen;
+static d_close_t	psmclose;
+static d_read_t		psmread;
+static d_write_t	psmwrite;
+static d_ioctl_t	psmioctl;
+static d_poll_t		psmpoll;
 
-static int enable_aux_dev(KBDC);
-static int disable_aux_dev(KBDC);
-static int get_mouse_status(KBDC, int *, int, int);
-static int get_aux_id(KBDC);
-static int set_mouse_sampling_rate(KBDC, int);
-static int set_mouse_scaling(KBDC, int);
-static int set_mouse_resolution(KBDC, int);
-static int set_mouse_mode(KBDC);
-static int get_mouse_buttons(KBDC);
-static int is_a_mouse(int);
-static void recover_from_error(KBDC);
-static int restore_controller(KBDC, int);
-static int doinitialize(struct psm_softc *, mousemode_t *);
-static int doopen(struct psm_softc *, int);
-static int reinitialize(struct psm_softc *, int);
-static char *model_name(int);
-static void psmsoftintr(void *);
-static void psmintr(void *);
-static void psmtimeout(void *);
-static int timeelapsed(const struct timeval *,
-    int, int, const struct timeval *);
-static void dropqueue(struct psm_softc *);
-static void flushpackets(struct psm_softc *);
+static int	enable_aux_dev(KBDC);
+static int	disable_aux_dev(KBDC);
+static int	get_mouse_status(KBDC, int *, int, int);
+static int	get_aux_id(KBDC);
+static int	set_mouse_sampling_rate(KBDC, int);
+static int	set_mouse_scaling(KBDC, int);
+static int	set_mouse_resolution(KBDC, int);
+static int	set_mouse_mode(KBDC);
+static int	get_mouse_buttons(KBDC);
+static int	is_a_mouse(int);
+static void	recover_from_error(KBDC);
+static int	restore_controller(KBDC, int);
+static int	doinitialize(struct psm_softc *, mousemode_t *);
+static int	doopen(struct psm_softc *, int);
+static int	reinitialize(struct psm_softc *, int);
+static char	*model_name(int);
+static void	psmsoftintr(void *);
+static void	psmintr(void *);
+static void	psmtimeout(void *);
+static int	timeelapsed(const struct timeval *, int, int,
+		    const struct timeval *);
+static void	dropqueue(struct psm_softc *);
+static void	flushpackets(struct psm_softc *);
+static void	proc_mmanplus(struct psm_softc *, packetbuf_t *,
+		    mousestatus_t *, int *, int *, int *);
+static int	proc_synaptics(struct psm_softc *, packetbuf_t *,
+		    mousestatus_t *, int *, int *, int *);
+static void	proc_versapad(struct psm_softc *, packetbuf_t *,
+		    mousestatus_t *, int *, int *, int *);
+static int	tame_mouse(struct psm_softc *, packetbuf_t *, mousestatus_t *,
+		    u_char *);
 
 /* vendor specific features */
-typedef int probefunc_t(struct psm_softc *);
+typedef int	probefunc_t(struct psm_softc *);
+
+static int	mouse_id_proc1(KBDC, int, int, int *);
+static int	mouse_ext_command(KBDC, int);
 
-static int mouse_id_proc1(KBDC, int, int, int *);
-static int mouse_ext_command(KBDC, int);
-static probefunc_t enable_groller;
-static probefunc_t enable_gmouse;
-static probefunc_t enable_aglide; 
-static probefunc_t enable_kmouse;
-static probefunc_t enable_msexplorer;
-static probefunc_t enable_msintelli;
-static probefunc_t enable_4dmouse;
-static probefunc_t enable_4dplus;
-static probefunc_t enable_mmanplus;
-static probefunc_t enable_synaptics;
-static probefunc_t enable_versapad;
-static int tame_mouse(struct psm_softc *, packetbuf_t *, mousestatus_t *, unsigned char *);
+static probefunc_t	enable_groller;
+static probefunc_t	enable_gmouse;
+static probefunc_t	enable_aglide;
+static probefunc_t	enable_kmouse;
+static probefunc_t	enable_msexplorer;
+static probefunc_t	enable_msintelli;
+static probefunc_t	enable_4dmouse;
+static probefunc_t	enable_4dplus;
+static probefunc_t	enable_mmanplus;
+static probefunc_t	enable_synaptics;
+static probefunc_t	enable_versapad;
 
 static struct {
-    int                 model;
-    unsigned char	syncmask;
-    int 		packetsize;
-    probefunc_t 	*probefunc;
+	int		model;
+	u_char		syncmask;
+	int		packetsize;
+	probefunc_t	*probefunc;
 } vendortype[] = {
-    /*
-     * WARNING: the order of probe is very important.  Don't mess it
-     * unless you know what you are doing.
-     */
-    { MOUSE_MODEL_NET,			/* Genius NetMouse */
-      0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_gmouse, },
-    { MOUSE_MODEL_NETSCROLL,		/* Genius NetScroll */
-      0xc8, 6, enable_groller, },
-    { MOUSE_MODEL_MOUSEMANPLUS,		/* Logitech MouseMan+ */
-      0x08, MOUSE_PS2_PACKETSIZE, enable_mmanplus, },
-    { MOUSE_MODEL_EXPLORER,		/* Microsoft IntelliMouse Explorer */
-      0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_msexplorer, },
-    { MOUSE_MODEL_4D,			/* A4 Tech 4D Mouse */
-      0x08, MOUSE_4D_PACKETSIZE, enable_4dmouse, },
-    { MOUSE_MODEL_4DPLUS,		/* A4 Tech 4D+ Mouse */
-      0xc8, MOUSE_4DPLUS_PACKETSIZE, enable_4dplus, },
-    { MOUSE_MODEL_INTELLI,		/* Microsoft IntelliMouse */
-      0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_msintelli, },
-    { MOUSE_MODEL_GLIDEPOINT,		/* ALPS GlidePoint */
-      0xc0, MOUSE_PS2_PACKETSIZE, enable_aglide, },
-    { MOUSE_MODEL_THINK,		/* Kensington ThinkingMouse */
-      0x80, MOUSE_PS2_PACKETSIZE, enable_kmouse, },
-    { MOUSE_MODEL_VERSAPAD,		/* Interlink electronics VersaPad */
-      0xe8, MOUSE_PS2VERSA_PACKETSIZE, enable_versapad, },
-    { MOUSE_MODEL_SYNAPTICS,		/* Synaptics Touchpad */
-      0xc0, MOUSE_SYNAPTICS_PACKETSIZE, enable_synaptics, },
-    { MOUSE_MODEL_GENERIC,
-      0xc0, MOUSE_PS2_PACKETSIZE, NULL, },
+	/*
+	 * WARNING: the order of probe is very important.  Don't mess it
+	 * unless you know what you are doing.
+	 */
+	{ MOUSE_MODEL_NET,		/* Genius NetMouse */
+	  0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_gmouse },
+	{ MOUSE_MODEL_NETSCROLL,	/* Genius NetScroll */
+	  0xc8, 6, enable_groller },
+	{ MOUSE_MODEL_MOUSEMANPLUS,	/* Logitech MouseMan+ */
+	  0x08, MOUSE_PS2_PACKETSIZE, enable_mmanplus },
+	{ MOUSE_MODEL_EXPLORER,		/* Microsoft IntelliMouse Explorer */
+	  0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_msexplorer },
+	{ MOUSE_MODEL_4D,		/* A4 Tech 4D Mouse */
+	  0x08, MOUSE_4D_PACKETSIZE, enable_4dmouse },
+	{ MOUSE_MODEL_4DPLUS,		/* A4 Tech 4D+ Mouse */
+	  0xc8, MOUSE_4DPLUS_PACKETSIZE, enable_4dplus },
+	{ MOUSE_MODEL_INTELLI,		/* Microsoft IntelliMouse */
+	  0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_msintelli },
+	{ MOUSE_MODEL_GLIDEPOINT,	/* ALPS GlidePoint */
+	  0xc0, MOUSE_PS2_PACKETSIZE, enable_aglide },
+	{ MOUSE_MODEL_THINK,		/* Kensington ThinkingMouse */
+	  0x80, MOUSE_PS2_PACKETSIZE, enable_kmouse },
+	{ MOUSE_MODEL_VERSAPAD,		/* Interlink electronics VersaPad */
+	  0xe8, MOUSE_PS2VERSA_PACKETSIZE, enable_versapad },
+	{ MOUSE_MODEL_SYNAPTICS,	/* Synaptics Touchpad */
+	  0xc0, MOUSE_SYNAPTICS_PACKETSIZE, enable_synaptics },
+	{ MOUSE_MODEL_GENERIC,
+	  0xc0, MOUSE_PS2_PACKETSIZE, NULL },
 };
-#define GENERIC_MOUSE_ENTRY	((sizeof(vendortype) / sizeof(*vendortype)) - 1)
+#define	GENERIC_MOUSE_ENTRY	\
+    ((sizeof(vendortype) / sizeof(*vendortype)) - 1)
 
 /* device driver declarateion */
 static device_method_t psm_methods[] = {
@@ -385,18 +396,18 @@
 };
 
 static driver_t psm_driver = {
-    PSM_DRIVER_NAME,
-    psm_methods,
-    sizeof(struct psm_softc),
+	PSM_DRIVER_NAME,
+	psm_methods,
+	sizeof(struct psm_softc),
 };
 
-
 static struct cdevsw psm_cdevsw = {
 	.d_version =	D_VERSION,
 	.d_flags =	D_NEEDGIANT,
 	.d_open =	psmopen,
 	.d_close =	psmclose,
 	.d_read =	psmread,
+	.d_write =	psmwrite,
 	.d_ioctl =	psmioctl,
 	.d_poll =	psmpoll,
 	.d_name =	PSM_DRIVER_NAME,
@@ -406,123 +417,123 @@
 static int
 enable_aux_dev(KBDC kbdc)
 {
-    int res;
+	int res;
 
-    res = send_aux_command(kbdc, PSMC_ENABLE_DEV);
-    VLOG(2, (LOG_DEBUG, "psm: ENABLE_DEV return code:%04x\n", res));
+	res = send_aux_command(kbdc, PSMC_ENABLE_DEV);
+	VLOG(2, (LOG_DEBUG, "psm: ENABLE_DEV return code:%04x\n", res));
 
-    return (res == PSM_ACK);
+	return (res == PSM_ACK);
 }
 
 static int
 disable_aux_dev(KBDC kbdc)
 {
-    int res;
+	int res;
 
-    res = send_aux_command(kbdc, PSMC_DISABLE_DEV);
-    VLOG(2, (LOG_DEBUG, "psm: DISABLE_DEV return code:%04x\n", res));
+	res = send_aux_command(kbdc, PSMC_DISABLE_DEV);
+	VLOG(2, (LOG_DEBUG, "psm: DISABLE_DEV return code:%04x\n", res));
 
-    return (res == PSM_ACK);
+	return (res == PSM_ACK);
 }
 
 static int
 get_mouse_status(KBDC kbdc, int *status, int flag, int len)
 {
-    int cmd;
-    int res;
-    int i;
+	int cmd;
+	int res;
+	int i;
 
-    switch (flag) {
-    case 0:
-    default:
-	cmd = PSMC_SEND_DEV_STATUS;
-	break;
-    case 1:
-	cmd = PSMC_SEND_DEV_DATA;
-	break;
-    }
-    empty_aux_buffer(kbdc, 5);
-    res = send_aux_command(kbdc, cmd);
-    VLOG(2, (LOG_DEBUG, "psm: SEND_AUX_DEV_%s return code:%04x\n", 
-	 (flag == 1) ? "DATA" : "STATUS", res));
-    if (res != PSM_ACK)
-        return 0;
+	switch (flag) {
+	case 0:
+	default:
+		cmd = PSMC_SEND_DEV_STATUS;
+		break;
+	case 1:
+		cmd = PSMC_SEND_DEV_DATA;
+		break;
+	}
+	empty_aux_buffer(kbdc, 5);
+	res = send_aux_command(kbdc, cmd);
+	VLOG(2, (LOG_DEBUG, "psm: SEND_AUX_DEV_%s return code:%04x\n",
+	    (flag == 1) ? "DATA" : "STATUS", res));
+	if (res != PSM_ACK)
+		return (0);
 
-    for (i = 0; i < len; ++i) {
-        status[i] = read_aux_data(kbdc);
-	if (status[i] < 0)
-	    break;
-    }
+	for (i = 0; i < len; ++i) {
+		status[i] = read_aux_data(kbdc);
+		if (status[i] < 0)
+			break;
+	}
 
-    VLOG(1, (LOG_DEBUG, "psm: %s %02x %02x %02x\n",
-         (flag == 1) ? "data" : "status", status[0], status[1], status[2]));
+	VLOG(1, (LOG_DEBUG, "psm: %s %02x %02x %02x\n",
+	    (flag == 1) ? "data" : "status", status[0], status[1], status[2]));
 
-    return i;
+	return (i);
 }
 
 static int
 get_aux_id(KBDC kbdc)
 {
-    int res;
-    int id;
+	int res;
+	int id;
 
-    empty_aux_buffer(kbdc, 5);
-    res = send_aux_command(kbdc, PSMC_SEND_DEV_ID);
-    VLOG(2, (LOG_DEBUG, "psm: SEND_DEV_ID return code:%04x\n", res));
-    if (res != PSM_ACK)
-	return (-1);
+	empty_aux_buffer(kbdc, 5);
+	res = send_aux_command(kbdc, PSMC_SEND_DEV_ID);
+	VLOG(2, (LOG_DEBUG, "psm: SEND_DEV_ID return code:%04x\n", res));
+	if (res != PSM_ACK)
+		return (-1);
 
-    /* 10ms delay */
-    DELAY(10000);
+	/* 10ms delay */
+	DELAY(10000);
 
-    id = read_aux_data(kbdc);
-    VLOG(2, (LOG_DEBUG, "psm: device ID: %04x\n", id));
+	id = read_aux_data(kbdc);
+	VLOG(2, (LOG_DEBUG, "psm: device ID: %04x\n", id));
 
-    return id;
+	return (id);
 }
 
 static int
 set_mouse_sampling_rate(KBDC kbdc, int rate)
 {
-    int res;
+	int res;
 
-    res = send_aux_command_and_data(kbdc, PSMC_SET_SAMPLING_RATE, rate);
-    VLOG(2, (LOG_DEBUG, "psm: SET_SAMPLING_RATE (%d) %04x\n", rate, res));
+	res = send_aux_command_and_data(kbdc, PSMC_SET_SAMPLING_RATE, rate);
+	VLOG(2, (LOG_DEBUG, "psm: SET_SAMPLING_RATE (%d) %04x\n", rate, res));
 
-    return ((res == PSM_ACK) ? rate : -1);
+	return ((res == PSM_ACK) ? rate : -1);
 }
 
 static int
 set_mouse_scaling(KBDC kbdc, int scale)
 {
-    int res;
+	int res;
 
-    switch (scale) {
-    case 1:
-    default:
-	scale = PSMC_SET_SCALING11;

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list