11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	usa28msg.h
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	Copyright (C) 1998-2000 InnoSys Incorporated.  All Rights Reserved
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	This file is available under a BSD-style copyright
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	Keyspan USB Async Message Formats for the USA26X
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	Redistribution and use in source and binary forms, with or without
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	modification, are permitted provided that the following conditions are
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	met:
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	1. Redistributions of source code must retain this licence text
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   	without modification, this list of conditions, and the following
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   	disclaimer.  The following copyright notice must appear immediately at
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   	the beginning of all source files:
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        	Copyright (C) 1998-2000 InnoSys Incorporated.  All Rights Reserved
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        	This file is available under a BSD-style copyright
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	2. The name of InnoSys Incorporated may not be used to endorse or promote
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   	products derived from this software without specific prior written
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   	permission.
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	THIS SOFTWARE IS PROVIDED BY INNOSYS CORP. ``AS IS'' AND ANY EXPRESS OR
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	SUCH DAMAGE.
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	Note: these message formats are common to USA18, USA19, and USA28;
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	(for USA28X, see usa26msg.h)
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	Buffer formats for RX/TX data messages are not defined by
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	a structure, but are described here:
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	USB OUT (host -> USA28, transmit) messages contain a
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	REQUEST_ACK indicator (set to 0xff to request an ACK at the
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	completion of transmit; 0x00 otherwise), followed by data.
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	If the port is configured for parity, the data will be an
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	alternating string of parity and data bytes, so the message
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	format will be:
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		RQSTACK PAR DAT PAR DAT ...
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	so the maximum length is 63 bytes (1 + 62, or 31 data bytes);
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	always an odd number for the total message length.
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	If there is no parity, the format is simply:
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		RQSTACK DAT DAT DAT ...
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	with a total data length of 63.
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	USB IN (USA28 -> host, receive) messages contain data and parity
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	if parity is configred, thusly:
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		DAT PAR DAT PAR DAT PAR ...
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	for a total of 32 data bytes;
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	If parity is not configured, the format is:
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		DAT DAT DAT ...
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	for a total of 64 data bytes.
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	In the TX messages (USB OUT), the 0x01 bit of the PARity byte is
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	the parity bit.  In the RX messages (USB IN), the PARity byte is
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	the content of the 8051's status register; the parity bit
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	(RX_PARITY_BIT) is the 0x04 bit.
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	revision history:
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	1999may06	add resetDataToggle to control message
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	2000mar21	add rs232invalid to status response message
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	2000apr04	add 230.4Kb definition to setBaudRate
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	2000apr13	add/remove loopbackMode switch
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	2000apr13	change definition of setBaudRate to cover 115.2Kb, too
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	2000jun01	add extended BSD-style copyright text
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef	__USA28MSG__
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	__USA28MSG__
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct keyspan_usa28_portControlMessage
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/*
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		there are four types of "commands" sent in the control message:
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		1.	configuration changes which must be requested by setting
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			the corresponding "set" flag (and should only be requested
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			when necessary, to reduce overhead on the USA28):
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	*/
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	setBaudRate,	// 0=don't set, 1=baudLo/Hi, 2=115.2K, 3=230.4K
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		baudLo,			// host does baud divisor calculation
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		baudHi;			// baudHi is only used for first port (gives lower rates)
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/*
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		2.	configuration changes which are done every time (because it's
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			hardly more trouble to do them than to check whether to do them):
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	*/
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	parity,			// 1=use parity, 0=don't
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		ctsFlowControl,	        // all except 19Q: 1=use CTS flow control, 0=don't
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds					// 19Q: 0x08:CTSflowControl 0x10:DSRflowControl
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		xonFlowControl,	// 1=use XON/XOFF flow control, 0=don't
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rts,			// 1=on, 0=off
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		dtr;			// 1=on, 0=off
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/*
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		3.	configuration data which is simply used as is (no overhead,
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			but must be correct in every host message).
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	*/
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	forwardingLength,  // forward when this number of chars available
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		forwardMs,		// forward this many ms after last rx data
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		breakThreshold,	// specified in ms, 1-255 (see note below)
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		xonChar,		// specified in current character format
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		xoffChar;		// specified in current character format
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/*
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		4.	commands which are flags only; these are processed in order
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			(so that, e.g., if both _txOn and _txOff flags are set, the
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			port ends in a TX_OFF state); any non-zero value is respected
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	*/
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	_txOn,			// enable transmitting (and continue if there's data)
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		_txOff,			// stop transmitting
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		txFlush,		// toss outbound data
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		txForceXoff,	// pretend we've received XOFF
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		txBreak,		// turn on break (leave on until txOn clears it)
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rxOn,			// turn on receiver
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rxOff,			// turn off receiver
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rxFlush,		// toss inbound data
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rxForward,		// forward all inbound data, NOW
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		returnStatus,	// return current status n times (1 or 2)
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		resetDataToggle;// reset data toggle state to DATA0
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct keyspan_usa28_portStatusMessage
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	port,			// 0=first, 1=second, 2=global (see below)
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		cts,
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		dsr,			// (not used in all products)
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		dcd,
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		ri,				// (not used in all products)
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		_txOff,			// port has been disabled (by host)
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		_txXoff,		// port is in XOFF state (either host or RX XOFF)
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		dataLost,		// count of lost chars; wraps; not guaranteed exact
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rxEnabled,		// as configured by rxOn/rxOff 1=on, 0=off
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rxBreak,		// 1=we're in break state
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		rs232invalid,	// 1=no valid signals on rs-232 inputs
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		controlResponse;// 1=a control messages has been processed
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// bit defines in txState
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TX_OFF			0x01	// requested by host txOff command
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TX_XOFF			0x02	// either real, or simulated by host
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct keyspan_usa28_globalControlMessage
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	sendGlobalStatus,	// 2=request for two status responses
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		resetStatusToggle,	// 1=reset global status toggle
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		resetStatusCount;	// a cycling value
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct keyspan_usa28_globalStatusMessage
1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	port,				// 3
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		sendGlobalStatus,	// from request, decremented
1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		resetStatusCount;	// as in request
1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct keyspan_usa28_globalDebugMessage
1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u8	port,				// 2
1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		n,					// typically a count/status byte
1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		b;					// typically a data byte
1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ie: the maximum length of an EZUSB endpoint buffer
1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MAX_DATA_LEN			64
1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// the parity bytes have only one significant bit
1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	RX_PARITY_BIT			0x04
1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TX_PARITY_BIT			0x01
1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// update status approx. 60 times a second (16.6666 ms)
1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	STATUS_UPDATE_INTERVAL	16
1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
202