mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 06:34:12 +08:00
[PATCH] Final rio polish
Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
2a7362f52a
commit
655fdeab80
@ -291,7 +291,7 @@ config SX
|
|||||||
|
|
||||||
config RIO
|
config RIO
|
||||||
tristate "Specialix RIO system support"
|
tristate "Specialix RIO system support"
|
||||||
depends on SERIAL_NONSTANDARD && !64BIT
|
depends on SERIAL_NONSTANDARD
|
||||||
help
|
help
|
||||||
This is a driver for the Specialix RIO, a smart serial card which
|
This is a driver for the Specialix RIO, a smart serial card which
|
||||||
drives an outboard box that can support up to 128 ports. Product
|
drives an outboard box that can support up to 128 ports. Product
|
||||||
|
@ -33,12 +33,6 @@
|
|||||||
#ifndef __rio_host_h__
|
#ifndef __rio_host_h__
|
||||||
#define __rio_host_h__
|
#define __rio_host_h__
|
||||||
|
|
||||||
#ifdef SCCS_LABELS
|
|
||||||
#ifndef lint
|
|
||||||
static char *_host_h_sccs_ = "@(#)host.h 1.2";
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** the host structure - one per host card in the system.
|
** the host structure - one per host card in the system.
|
||||||
*/
|
*/
|
||||||
@ -77,9 +71,6 @@ struct Host {
|
|||||||
#define RC_STARTUP 1
|
#define RC_STARTUP 1
|
||||||
#define RC_RUNNING 2
|
#define RC_RUNNING 2
|
||||||
#define RC_STUFFED 3
|
#define RC_STUFFED 3
|
||||||
#define RC_SOMETHING 4
|
|
||||||
#define RC_SOMETHING_NEW 5
|
|
||||||
#define RC_SOMETHING_ELSE 6
|
|
||||||
#define RC_READY 7
|
#define RC_READY 7
|
||||||
#define RUN_STATE 7
|
#define RUN_STATE 7
|
||||||
/*
|
/*
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/termios.h>
|
#include <linux/termios.h>
|
||||||
#include <linux/serial.h>
|
#include <linux/serial.h>
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
#include <asm/semaphore.h>
|
#include <asm/semaphore.h>
|
||||||
#include <linux/generic_serial.h>
|
#include <linux/generic_serial.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
@ -1394,14 +1394,17 @@ int RIOPreemptiveCmd(struct rio_info *p, struct Port *PortP, u8 Cmd)
|
|||||||
return RIO_FAIL;
|
return RIO_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((int) ((char) PortP->InUse) == -1) || !(CmdBlkP = RIOGetCmdBlk())) {
|
if ((PortP->InUse == (typeof(PortP->InUse))-1) ||
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Cannot allocate command block for command %d on port %d\n", Cmd, PortP->PortNum);
|
!(CmdBlkP = RIOGetCmdBlk())) {
|
||||||
|
rio_dprintk(RIO_DEBUG_CTRL, "Cannot allocate command block "
|
||||||
|
"for command %d on port %d\n", Cmd, PortP->PortNum);
|
||||||
return RIO_FAIL;
|
return RIO_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Command blk %p - InUse now %d\n", CmdBlkP, PortP->InUse);
|
rio_dprintk(RIO_DEBUG_CTRL, "Command blk %p - InUse now %d\n",
|
||||||
|
CmdBlkP, PortP->InUse);
|
||||||
|
|
||||||
PktCmdP = (struct PktCmd_M *) &CmdBlkP->Packet.data[0];
|
PktCmdP = (struct PktCmd_M *)&CmdBlkP->Packet.data[0];
|
||||||
|
|
||||||
CmdBlkP->Packet.src_unit = 0;
|
CmdBlkP->Packet.src_unit = 0;
|
||||||
if (PortP->SecondBlock)
|
if (PortP->SecondBlock)
|
||||||
@ -1425,38 +1428,46 @@ int RIOPreemptiveCmd(struct rio_info *p, struct Port *PortP, u8 Cmd)
|
|||||||
|
|
||||||
switch (Cmd) {
|
switch (Cmd) {
|
||||||
case MEMDUMP:
|
case MEMDUMP:
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue MEMDUMP command blk %p (addr 0x%x)\n", CmdBlkP, (int) SubCmd.Addr);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue MEMDUMP command blk %p "
|
||||||
|
"(addr 0x%x)\n", CmdBlkP, (int) SubCmd.Addr);
|
||||||
PktCmdP->SubCommand = MEMDUMP;
|
PktCmdP->SubCommand = MEMDUMP;
|
||||||
PktCmdP->SubAddr = SubCmd.Addr;
|
PktCmdP->SubAddr = SubCmd.Addr;
|
||||||
break;
|
break;
|
||||||
case FCLOSE:
|
case FCLOSE:
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue FCLOSE command blk %p\n", CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue FCLOSE command blk %p\n",
|
||||||
|
CmdBlkP);
|
||||||
break;
|
break;
|
||||||
case READ_REGISTER:
|
case READ_REGISTER:
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue READ_REGISTER (0x%x) command blk %p\n", (int) SubCmd.Addr, CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue READ_REGISTER (0x%x) "
|
||||||
|
"command blk %p\n", (int) SubCmd.Addr, CmdBlkP);
|
||||||
PktCmdP->SubCommand = READ_REGISTER;
|
PktCmdP->SubCommand = READ_REGISTER;
|
||||||
PktCmdP->SubAddr = SubCmd.Addr;
|
PktCmdP->SubAddr = SubCmd.Addr;
|
||||||
break;
|
break;
|
||||||
case RESUME:
|
case RESUME:
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue RESUME command blk %p\n", CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue RESUME command blk %p\n",
|
||||||
|
CmdBlkP);
|
||||||
break;
|
break;
|
||||||
case RFLUSH:
|
case RFLUSH:
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue RFLUSH command blk %p\n", CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue RFLUSH command blk %p\n",
|
||||||
|
CmdBlkP);
|
||||||
CmdBlkP->PostFuncP = RIORFlushEnable;
|
CmdBlkP->PostFuncP = RIORFlushEnable;
|
||||||
break;
|
break;
|
||||||
case SUSPEND:
|
case SUSPEND:
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue SUSPEND command blk %p\n", CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue SUSPEND command blk %p\n",
|
||||||
|
CmdBlkP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MGET:
|
case MGET:
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue MGET command blk %p\n", CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue MGET command blk %p\n",
|
||||||
|
CmdBlkP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSET:
|
case MSET:
|
||||||
case MBIC:
|
case MBIC:
|
||||||
case MBIS:
|
case MBIS:
|
||||||
CmdBlkP->Packet.data[4] = (char) PortP->ModemLines;
|
CmdBlkP->Packet.data[4] = (char) PortP->ModemLines;
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue MSET/MBIC/MBIS command blk %p\n", CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue MSET/MBIC/MBIS command "
|
||||||
|
"blk %p\n", CmdBlkP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WFLUSH:
|
case WFLUSH:
|
||||||
@ -1465,12 +1476,14 @@ int RIOPreemptiveCmd(struct rio_info *p, struct Port *PortP, u8 Cmd)
|
|||||||
** allowed then we should not bother sending any more to the
|
** allowed then we should not bother sending any more to the
|
||||||
** RTA.
|
** RTA.
|
||||||
*/
|
*/
|
||||||
if ((int) ((char) PortP->WflushFlag) == (int) -1) {
|
if (PortP->WflushFlag == (typeof(PortP->WflushFlag))-1) {
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Trashed WFLUSH, WflushFlag about to wrap!");
|
rio_dprintk(RIO_DEBUG_CTRL, "Trashed WFLUSH, "
|
||||||
|
"WflushFlag about to wrap!");
|
||||||
RIOFreeCmdBlk(CmdBlkP);
|
RIOFreeCmdBlk(CmdBlkP);
|
||||||
return (RIO_FAIL);
|
return (RIO_FAIL);
|
||||||
} else {
|
} else {
|
||||||
rio_dprintk(RIO_DEBUG_CTRL, "Queue WFLUSH command blk %p\n", CmdBlkP);
|
rio_dprintk(RIO_DEBUG_CTRL, "Queue WFLUSH command "
|
||||||
|
"blk %p\n", CmdBlkP);
|
||||||
CmdBlkP->PostFuncP = RIOWFlushMark;
|
CmdBlkP->PostFuncP = RIOWFlushMark;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -33,10 +33,6 @@
|
|||||||
#ifndef __rioioctl_h__
|
#ifndef __rioioctl_h__
|
||||||
#define __rioioctl_h__
|
#define __rioioctl_h__
|
||||||
|
|
||||||
#ifdef SCCS_LABELS
|
|
||||||
static char *_rioioctl_h_sccs_ = "@(#)rioioctl.h 1.2";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RIO device driver - user ioctls and associated structures.
|
** RIO device driver - user ioctls and associated structures.
|
||||||
*/
|
*/
|
||||||
@ -44,55 +40,13 @@ static char *_rioioctl_h_sccs_ = "@(#)rioioctl.h 1.2";
|
|||||||
struct portStats {
|
struct portStats {
|
||||||
int port;
|
int port;
|
||||||
int gather;
|
int gather;
|
||||||
ulong txchars;
|
unsigned long txchars;
|
||||||
ulong rxchars;
|
unsigned long rxchars;
|
||||||
ulong opens;
|
unsigned long opens;
|
||||||
ulong closes;
|
unsigned long closes;
|
||||||
ulong ioctls;
|
unsigned long ioctls;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#define rIOC ('r'<<8)
|
|
||||||
#define TCRIOSTATE (rIOC | 1)
|
|
||||||
#define TCRIOXPON (rIOC | 2)
|
|
||||||
#define TCRIOXPOFF (rIOC | 3)
|
|
||||||
#define TCRIOXPCPS (rIOC | 4)
|
|
||||||
#define TCRIOXPRINT (rIOC | 5)
|
|
||||||
#define TCRIOIXANYON (rIOC | 6)
|
|
||||||
#define TCRIOIXANYOFF (rIOC | 7)
|
|
||||||
#define TCRIOIXONON (rIOC | 8)
|
|
||||||
#define TCRIOIXONOFF (rIOC | 9)
|
|
||||||
#define TCRIOMBIS (rIOC | 10)
|
|
||||||
#define TCRIOMBIC (rIOC | 11)
|
|
||||||
#define TCRIOTRIAD (rIOC | 12)
|
|
||||||
#define TCRIOTSTATE (rIOC | 13)
|
|
||||||
|
|
||||||
/*
|
|
||||||
** 15.10.1998 ARG - ESIL 0761 part fix
|
|
||||||
** Add RIO ioctls for manipulating RTS and CTS flow control, (as LynxOS
|
|
||||||
** appears to not support hardware flow control).
|
|
||||||
*/
|
|
||||||
#define TCRIOCTSFLOWEN (rIOC | 14) /* enable CTS flow control */
|
|
||||||
#define TCRIOCTSFLOWDIS (rIOC | 15) /* disable CTS flow control */
|
|
||||||
#define TCRIORTSFLOWEN (rIOC | 16) /* enable RTS flow control */
|
|
||||||
#define TCRIORTSFLOWDIS (rIOC | 17) /* disable RTS flow control */
|
|
||||||
|
|
||||||
/*
|
|
||||||
** 09.12.1998 ARG - ESIL 0776 part fix
|
|
||||||
** Definition for 'RIOC' also appears in daemon.h, so we'd better do a
|
|
||||||
** #ifndef here first.
|
|
||||||
** 'RIO_QUICK_CHECK' also #define'd here as this ioctl is now
|
|
||||||
** allowed to be used by customers.
|
|
||||||
**
|
|
||||||
** 05.02.1999 ARG -
|
|
||||||
** This is what I've decied to do with ioctls etc., which are intended to be
|
|
||||||
** invoked from users applications :
|
|
||||||
** Anything that needs to be defined here will be removed from daemon.h, that
|
|
||||||
** way it won't end up having to be defined/maintained in two places. The only
|
|
||||||
** consequence of this is that this file should now be #include'd by daemon.h
|
|
||||||
**
|
|
||||||
** 'stats' ioctls now #define'd here as they are to be used by customers.
|
|
||||||
*/
|
|
||||||
#define RIOC ('R'<<8)|('i'<<16)|('o'<<24)
|
#define RIOC ('R'<<8)|('i'<<16)|('o'<<24)
|
||||||
|
|
||||||
#define RIO_QUICK_CHECK (RIOC | 105)
|
#define RIO_QUICK_CHECK (RIOC | 105)
|
||||||
|
Loading…
Reference in New Issue
Block a user