Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fec6c4e0 authored by Mark Hounschell's avatar Mark Hounschell Committed by Greg Kroah-Hartman
Browse files

staging: dgap: Merge dgap_fep5.h into dgap_driver.h



There is a lot of cleanup work to do on these digi drivers and merging as
much as is possible will make it easier. I also notice that many merged
drivers are single source and header.

Signed-off-by: default avatarMark Hounschell <markh@compro.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 30580a78
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -51,7 +51,6 @@

#include "dgap_driver.h"
#include "dgap_pci.h"
#include "dgap_fep5.h"
#include "dgap_conf.h"
#include "dgap_parse.h"
#include "dgap_types.h"
+222 −0
Original line number Diff line number Diff line
@@ -238,6 +238,119 @@
# define DGAP_UNLOCK(x,y)		spin_unlock_irqrestore(&(x), y)
# define DGAP_TRYLOCK(x,y)		spin_trylock(&(x))

/************************************************************************
 *      FEP memory offsets
 ************************************************************************/
#define START           0x0004L         /* Execution start address      */

#define CMDBUF          0x0d10L         /* Command (cm_t) structure offset */
#define CMDSTART        0x0400L         /* Start of command buffer      */
#define CMDMAX          0x0800L         /* End of command buffer        */

#define EVBUF           0x0d18L         /* Event (ev_t) structure       */
#define EVSTART         0x0800L         /* Start of event buffer        */
#define EVMAX           0x0c00L         /* End of event buffer          */
#define FEP5_PLUS       0x0E40          /* ASCII '5' and ASCII 'A' is here  */
#define ECS_SEG         0x0E44          /* Segment of the extended channel structure */
#define LINE_SPEED      0x10            /* Offset into ECS_SEG for line speed   */
                                        /* if the fep has extended capabilities */

/* BIOS MAGIC SPOTS */
#define ERROR           0x0C14L		/* BIOS error code              */
#define SEQUENCE	0x0C12L		/* BIOS sequence indicator      */
#define POSTAREA	0x0C00L		/* POST complete message area   */

/* FEP MAGIC SPOTS */
#define FEPSTAT         POSTAREA        /* OS here when FEP comes up    */
#define NCHAN           0x0C02L         /* number of ports FEP sees     */
#define PANIC           0x0C10L         /* PANIC area for FEP           */
#define KMEMEM          0x0C30L         /* Memory for KME use           */
#define CONFIG          0x0CD0L         /* Concentrator configuration info */
#define CONFIGSIZE      0x0030          /* configuration info size      */
#define DOWNREQ         0x0D00          /* Download request buffer pointer */

#define CHANBUF         0x1000L         /* Async channel (bs_t) structs */
#define FEPOSSIZE       0x1FFF          /* 8K FEPOS                     */

#define XEMPORTS    0xC02	/*
				 * Offset in board memory where FEP5 stores
				 * how many ports it has detected.
				 * NOTE: FEP5 reports 64 ports when the user
				 * has the cable in EBI OUT instead of EBI IN.
				 */

#define FEPCLR      0x00
#define FEPMEM      0x02
#define FEPRST      0x04
#define FEPINT      0x08
#define FEPMASK     0x0e
#define FEPWIN      0x80

#define LOWMEM      0x0100
#define HIGHMEM     0x7f00

#define FEPTIMEOUT 200000

#define ENABLE_INTR		0x0e04		/* Enable interrupts flag */
#define FEPPOLL_MIN		1		/* minimum of 1 millisecond */
#define FEPPOLL_MAX		20		/* maximum of 20 milliseconds */
#define FEPPOLL			0x0c26		/* Fep event poll interval */

#define	IALTPIN			0x0080		/* Input flag to swap DSR <-> DCD */

/************************************************************************
 * FEP supported functions
 ************************************************************************/
#define SRLOW		0xe0		/* Set receive low water	*/
#define SRHIGH		0xe1		/* Set receive high water	*/
#define FLUSHTX		0xe2		/* Flush transmit buffer	*/
#define PAUSETX		0xe3		/* Pause data transmission	*/
#define RESUMETX	0xe4		/* Resume data transmission	*/
#define SMINT		0xe5		/* Set Modem Interrupt		*/
#define SAFLOWC		0xe6		/* Set Aux. flow control chars	*/
#define SBREAK		0xe8		/* Send break			*/
#define SMODEM		0xe9		/* Set 8530 modem control lines	*/
#define SIFLAG		0xea		/* Set UNIX iflags		*/
#define SFLOWC		0xeb		/* Set flow control characters	*/
#define STLOW		0xec		/* Set transmit low water mark	*/
#define RPAUSE		0xee		/* Pause receive		*/
#define RRESUME		0xef		/* Resume receive		*/
#define CHRESET		0xf0		/* Reset Channel		*/
#define BUFSETALL	0xf2		/* Set Tx & Rx buffer size avail*/
#define SOFLAG		0xf3		/* Set UNIX oflags		*/
#define SHFLOW		0xf4		/* Set hardware handshake	*/
#define SCFLAG		0xf5		/* Set UNIX cflags		*/
#define SVNEXT		0xf6		/* Set VNEXT character		*/
#define SPINTFC		0xfc		/* Reserved			*/
#define SCOMMODE	0xfd		/* Set RS232/422 mode		*/


/************************************************************************
 *	Modes for SCOMMODE
 ************************************************************************/
#define MODE_232	0x00
#define MODE_422	0x01


/************************************************************************
 *      Event flags.
 ************************************************************************/
#define IFBREAK         0x01            /* Break received               */
#define IFTLW           0x02            /* Transmit low water           */
#define IFTEM           0x04            /* Transmitter empty            */
#define IFDATA          0x08            /* Receive data present         */
#define IFMODEM         0x20            /* Modem status change          */

/************************************************************************
 *      Modem flags
 ************************************************************************/
#       define  DM_RTS          0x02    /* Request to send              */
#       define  DM_CD           0x80    /* Carrier detect               */
#       define  DM_DSR          0x20    /* Data set ready               */
#       define  DM_CTS          0x10    /* Clear to send                */
#       define  DM_RI           0x40    /* Ring indicator               */
#       define  DM_DTR          0x01    /* Data terminal ready          */

/*
 * All the possible states the driver can be while being loaded.
 */
@@ -564,6 +677,115 @@ struct channel_t {
	wait_queue_head_t ch_sniff_wait;
};

/************************************************************************
 * Command structure definition.
 ************************************************************************/
struct cm_t {
	volatile unsigned short cm_head;	/* Command buffer head offset	*/
	volatile unsigned short cm_tail;	/* Command buffer tail offset	*/
	volatile unsigned short cm_start;	/* start offset of buffer	*/
	volatile unsigned short cm_max;		/* last offset of buffer	*/
};

/************************************************************************
 * Event structure definition.
 ************************************************************************/
struct ev_t {
	volatile unsigned short ev_head;	/* Command buffer head offset	*/
	volatile unsigned short ev_tail;	/* Command buffer tail offset	*/
	volatile unsigned short ev_start;	/* start offset of buffer	*/
	volatile unsigned short ev_max;		/* last offset of buffer	*/
};

/************************************************************************
 * Download buffer structure.
 ************************************************************************/
struct downld_t {
	uchar	dl_type;		/* Header                       */
	uchar	dl_seq;			/* Download sequence            */
	ushort	dl_srev;		/* Software revision number     */
	ushort	dl_lrev;		/* Low revision number          */
	ushort	dl_hrev;		/* High revision number         */
	ushort	dl_seg;			/* Start segment address        */
	ushort	dl_size;		/* Number of bytes to download  */
	uchar	dl_data[1024];		/* Download data                */
};

/************************************************************************
 * Per channel buffer structure
 ************************************************************************
 *              Base Structure Entries Usage Meanings to Host           *
 *                                                                      *
 *        W = read write        R = read only                           *
 *        C = changed by commands only                                  *
 *        U = unknown (may be changed w/o notice)                       *
 ************************************************************************/
struct bs_t {
	volatile unsigned short  tp_jmp;	/* Transmit poll jump		 */
	volatile unsigned short  tc_jmp;	/* Cooked procedure jump	 */
	volatile unsigned short  ri_jmp;	/* Not currently used		 */
	volatile unsigned short  rp_jmp;	/* Receive poll jump		 */

	volatile unsigned short  tx_seg;	/* W  Tx segment	 */
	volatile unsigned short  tx_head;	/* W  Tx buffer head offset	*/
	volatile unsigned short  tx_tail;	/* R  Tx buffer tail offset	*/
	volatile unsigned short  tx_max;	/* W  Tx buffer size - 1	 */

	volatile unsigned short  rx_seg;	/* W  Rx segment		*/
	volatile unsigned short  rx_head;	/* W  Rx buffer head offset	*/
	volatile unsigned short  rx_tail;	/* R  Rx buffer tail offset	*/
	volatile unsigned short  rx_max;	/* W  Rx buffer size - 1	 */

	volatile unsigned short  tx_lw;		/* W  Tx buffer low water mark  */
	volatile unsigned short  rx_lw;		/* W  Rx buffer low water mark  */
	volatile unsigned short  rx_hw;		/* W  Rx buffer high water mark */
	volatile unsigned short  incr;		/* W  Increment to next channel */

	volatile unsigned short  fepdev;	/* U  SCC device base address    */
	volatile unsigned short  edelay;	/* W  Exception delay            */
	volatile unsigned short  blen;		/* W  Break length              */
	volatile unsigned short  btime;		/* U  Break complete time       */

	volatile unsigned short  iflag;		/* C  UNIX input flags          */
	volatile unsigned short  oflag;		/* C  UNIX output flags         */
	volatile unsigned short  cflag;		/* C  UNIX control flags        */
	volatile unsigned short  wfill[13];	/* U  Reserved for expansion    */

	volatile unsigned char   num;		/* U  Channel number            */
	volatile unsigned char   ract;		/* U  Receiver active counter   */
	volatile unsigned char   bstat;		/* U  Break status bits         */
	volatile unsigned char   tbusy;		/* W  Transmit busy             */
	volatile unsigned char   iempty;	/* W  Transmit empty event enable */
	volatile unsigned char   ilow;		/* W  Transmit low-water event enable */
	volatile unsigned char   idata;		/* W  Receive data interrupt enable */
	volatile unsigned char   eflag;		/* U  Host event flags          */

	volatile unsigned char   tflag;		/* U  Transmit flags            */
	volatile unsigned char   rflag;		/* U  Receive flags             */
	volatile unsigned char   xmask;		/* U  Transmit ready flags      */
	volatile unsigned char   xval;		/* U  Transmit ready value      */
	volatile unsigned char   m_stat;	/* RC Modem status bits          */
	volatile unsigned char   m_change;	/* U  Modem bits which changed  */
	volatile unsigned char   m_int;		/* W  Modem interrupt enable bits */
	volatile unsigned char   m_last;	/* U  Last modem status         */

	volatile unsigned char   mtran;		/* C   Unreported modem trans   */
	volatile unsigned char   orun;		/* C   Buffer overrun occurred  */
	volatile unsigned char   astartc;	/* W   Auxiliary Xon char       */
	volatile unsigned char   astopc;	/* W   Auxiliary Xoff char      */
	volatile unsigned char   startc;	/* W   Xon character             */
	volatile unsigned char   stopc;		/* W   Xoff character           */
	volatile unsigned char   vnextc;	/* W   Vnext character           */
	volatile unsigned char   hflow;		/* C   Software flow control    */
	
	volatile unsigned char   fillc;		/* U   Delay Fill character     */
	volatile unsigned char   ochar;		/* U   Saved output character   */
	volatile unsigned char   omask;		/* U   Output character mask    */

	volatile unsigned char   bfill[13];	/* U   Reserved for expansion   */

	volatile unsigned char   scc[16];	/* U   SCC registers            */
};

/*************************************************************************
 *

drivers/staging/dgap/dgap_fep5.h

deleted100644 → 0
+0 −253
Original line number Diff line number Diff line
/*
 * Copyright 2003 Digi International (www.digi.com)
 *	Scott H Kilau <Scott_Kilau at digi dot com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *	NOTE: THIS IS A SHARED HEADER. DO NOT CHANGE CODING STYLE!!!
 *
 ************************************************************************
 ***	FEP Version 5 dependent definitions
 ************************************************************************/

#ifndef __DGAP_FEP5_H
#define __DGAP_FEP5_H

/************************************************************************
 *      FEP memory offsets
 ************************************************************************/
#define START           0x0004L         /* Execution start address      */

#define CMDBUF          0x0d10L         /* Command (cm_t) structure offset */
#define CMDSTART        0x0400L         /* Start of command buffer      */
#define CMDMAX          0x0800L         /* End of command buffer        */

#define EVBUF           0x0d18L         /* Event (ev_t) structure       */
#define EVSTART         0x0800L         /* Start of event buffer        */
#define EVMAX           0x0c00L         /* End of event buffer          */
#define FEP5_PLUS       0x0E40          /* ASCII '5' and ASCII 'A' is here  */
#define ECS_SEG         0x0E44          /* Segment of the extended channel structure */
#define LINE_SPEED      0x10            /* Offset into ECS_SEG for line speed   */
                                        /* if the fep has extended capabilities */

/* BIOS MAGIC SPOTS */
#define ERROR           0x0C14L		/* BIOS error code              */
#define SEQUENCE	0x0C12L		/* BIOS sequence indicator      */
#define POSTAREA	0x0C00L		/* POST complete message area   */

/* FEP MAGIC SPOTS */
#define FEPSTAT         POSTAREA        /* OS here when FEP comes up    */
#define NCHAN           0x0C02L         /* number of ports FEP sees     */
#define PANIC           0x0C10L         /* PANIC area for FEP           */
#define KMEMEM          0x0C30L         /* Memory for KME use           */
#define CONFIG          0x0CD0L         /* Concentrator configuration info */
#define CONFIGSIZE      0x0030          /* configuration info size      */
#define DOWNREQ         0x0D00          /* Download request buffer pointer */

#define CHANBUF         0x1000L         /* Async channel (bs_t) structs */
#define FEPOSSIZE       0x1FFF          /* 8K FEPOS                     */

#define XEMPORTS    0xC02	/*
				 * Offset in board memory where FEP5 stores
				 * how many ports it has detected.
				 * NOTE: FEP5 reports 64 ports when the user
				 * has the cable in EBI OUT instead of EBI IN.
				 */

#define FEPCLR      0x00
#define FEPMEM      0x02
#define FEPRST      0x04
#define FEPINT      0x08
#define FEPMASK     0x0e
#define FEPWIN      0x80

#define LOWMEM      0x0100
#define HIGHMEM     0x7f00

#define FEPTIMEOUT 200000

#define ENABLE_INTR		0x0e04		/* Enable interrupts flag */
#define FEPPOLL_MIN		1		/* minimum of 1 millisecond */
#define FEPPOLL_MAX		20		/* maximum of 20 milliseconds */
#define FEPPOLL			0x0c26		/* Fep event poll interval */

#define	IALTPIN			0x0080		/* Input flag to swap DSR <-> DCD */

/************************************************************************
 * Command structure definition.
 ************************************************************************/
struct cm_t {
	volatile unsigned short cm_head;	/* Command buffer head offset	*/
	volatile unsigned short cm_tail;	/* Command buffer tail offset	*/
	volatile unsigned short cm_start;	/* start offset of buffer	*/
	volatile unsigned short cm_max;		/* last offset of buffer	*/
};

/************************************************************************
 * Event structure definition.
 ************************************************************************/
struct ev_t {
	volatile unsigned short ev_head;	/* Command buffer head offset	*/
	volatile unsigned short ev_tail;	/* Command buffer tail offset	*/
	volatile unsigned short ev_start;	/* start offset of buffer	*/
	volatile unsigned short ev_max;		/* last offset of buffer	*/
};

/************************************************************************
 * Download buffer structure.
 ************************************************************************/
struct downld_t {
	uchar	dl_type;		/* Header                       */
	uchar	dl_seq;			/* Download sequence            */
	ushort	dl_srev;		/* Software revision number     */
	ushort	dl_lrev;		/* Low revision number          */
	ushort	dl_hrev;		/* High revision number         */
	ushort	dl_seg;			/* Start segment address        */
	ushort	dl_size;		/* Number of bytes to download  */
	uchar	dl_data[1024];		/* Download data                */
};

/************************************************************************
 * Per channel buffer structure
 ************************************************************************
 *              Base Structure Entries Usage Meanings to Host           *
 *                                                                      *
 *        W = read write        R = read only                           *
 *        C = changed by commands only                                  *
 *        U = unknown (may be changed w/o notice)                       *
 ************************************************************************/
struct bs_t {
	volatile unsigned short  tp_jmp;	/* Transmit poll jump		 */
	volatile unsigned short  tc_jmp;	/* Cooked procedure jump	 */
	volatile unsigned short  ri_jmp;	/* Not currently used		 */
	volatile unsigned short  rp_jmp;	/* Receive poll jump		 */

	volatile unsigned short  tx_seg;	/* W  Tx segment	 */
	volatile unsigned short  tx_head;	/* W  Tx buffer head offset	*/
	volatile unsigned short  tx_tail;	/* R  Tx buffer tail offset	*/
	volatile unsigned short  tx_max;	/* W  Tx buffer size - 1	 */

	volatile unsigned short  rx_seg;	/* W  Rx segment		*/
	volatile unsigned short  rx_head;	/* W  Rx buffer head offset	*/
	volatile unsigned short  rx_tail;	/* R  Rx buffer tail offset	*/
	volatile unsigned short  rx_max;	/* W  Rx buffer size - 1	 */

	volatile unsigned short  tx_lw;		/* W  Tx buffer low water mark  */
	volatile unsigned short  rx_lw;		/* W  Rx buffer low water mark  */
	volatile unsigned short  rx_hw;		/* W  Rx buffer high water mark */
	volatile unsigned short  incr;		/* W  Increment to next channel */

	volatile unsigned short  fepdev;	/* U  SCC device base address    */
	volatile unsigned short  edelay;	/* W  Exception delay            */
	volatile unsigned short  blen;		/* W  Break length              */
	volatile unsigned short  btime;		/* U  Break complete time       */

	volatile unsigned short  iflag;		/* C  UNIX input flags          */
	volatile unsigned short  oflag;		/* C  UNIX output flags         */
	volatile unsigned short  cflag;		/* C  UNIX control flags        */
	volatile unsigned short  wfill[13];	/* U  Reserved for expansion    */

	volatile unsigned char   num;		/* U  Channel number            */
	volatile unsigned char   ract;		/* U  Receiver active counter   */
	volatile unsigned char   bstat;		/* U  Break status bits         */
	volatile unsigned char   tbusy;		/* W  Transmit busy             */
	volatile unsigned char   iempty;	/* W  Transmit empty event enable */
	volatile unsigned char   ilow;		/* W  Transmit low-water event enable */
	volatile unsigned char   idata;		/* W  Receive data interrupt enable */
	volatile unsigned char   eflag;		/* U  Host event flags          */

	volatile unsigned char   tflag;		/* U  Transmit flags            */
	volatile unsigned char   rflag;		/* U  Receive flags             */
	volatile unsigned char   xmask;		/* U  Transmit ready flags      */
	volatile unsigned char   xval;		/* U  Transmit ready value      */
	volatile unsigned char   m_stat;	/* RC Modem status bits          */
	volatile unsigned char   m_change;	/* U  Modem bits which changed  */
	volatile unsigned char   m_int;		/* W  Modem interrupt enable bits */
	volatile unsigned char   m_last;	/* U  Last modem status         */

	volatile unsigned char   mtran;		/* C   Unreported modem trans   */
	volatile unsigned char   orun;		/* C   Buffer overrun occurred  */
	volatile unsigned char   astartc;	/* W   Auxiliary Xon char       */
	volatile unsigned char   astopc;	/* W   Auxiliary Xoff char      */
	volatile unsigned char   startc;	/* W   Xon character             */
	volatile unsigned char   stopc;		/* W   Xoff character           */
	volatile unsigned char   vnextc;	/* W   Vnext character           */
	volatile unsigned char   hflow;		/* C   Software flow control    */

	volatile unsigned char   fillc;		/* U   Delay Fill character     */
	volatile unsigned char   ochar;		/* U   Saved output character   */
	volatile unsigned char   omask;		/* U   Output character mask    */

	volatile unsigned char   bfill[13];	/* U   Reserved for expansion   */

	volatile unsigned char   scc[16];	/* U   SCC registers            */
};


/************************************************************************
 * FEP supported functions
 ************************************************************************/
#define SRLOW		0xe0		/* Set receive low water	*/
#define SRHIGH		0xe1		/* Set receive high water	*/
#define FLUSHTX		0xe2		/* Flush transmit buffer	*/
#define PAUSETX		0xe3		/* Pause data transmission	*/
#define RESUMETX	0xe4		/* Resume data transmission	*/
#define SMINT		0xe5		/* Set Modem Interrupt		*/
#define SAFLOWC		0xe6		/* Set Aux. flow control chars	*/
#define SBREAK		0xe8		/* Send break			*/
#define SMODEM		0xe9		/* Set 8530 modem control lines	*/
#define SIFLAG		0xea		/* Set UNIX iflags		*/
#define SFLOWC		0xeb		/* Set flow control characters	*/
#define STLOW		0xec		/* Set transmit low water mark	*/
#define RPAUSE		0xee		/* Pause receive		*/
#define RRESUME		0xef		/* Resume receive		*/
#define CHRESET		0xf0		/* Reset Channel		*/
#define BUFSETALL	0xf2		/* Set Tx & Rx buffer size avail*/
#define SOFLAG		0xf3		/* Set UNIX oflags		*/
#define SHFLOW		0xf4		/* Set hardware handshake	*/
#define SCFLAG		0xf5		/* Set UNIX cflags		*/
#define SVNEXT		0xf6		/* Set VNEXT character		*/
#define SPINTFC		0xfc		/* Reserved			*/
#define SCOMMODE	0xfd		/* Set RS232/422 mode		*/


/************************************************************************
 *	Modes for SCOMMODE
 ************************************************************************/
#define MODE_232	0x00
#define MODE_422	0x01


/************************************************************************
 *      Event flags.
 ************************************************************************/
#define IFBREAK         0x01            /* Break received               */
#define IFTLW           0x02            /* Transmit low water           */
#define IFTEM           0x04            /* Transmitter empty            */
#define IFDATA          0x08            /* Receive data present         */
#define IFMODEM         0x20            /* Modem status change          */

/************************************************************************
 *      Modem flags
 ************************************************************************/
#       define  DM_RTS          0x02    /* Request to send              */
#       define  DM_CD           0x80    /* Carrier detect               */
#       define  DM_DSR          0x20    /* Data set ready               */
#       define  DM_CTS          0x10    /* Clear to send                */
#       define  DM_RI           0x40    /* Ring indicator               */
#       define  DM_DTR          0x01    /* Data terminal ready          */


#endif