#ifndef __PCICC32_H__
#define __PCICC32_H__
//****************************************************************************
// Copyright (C) 2000-2004 ARW Elektronik Germany
//
//
// 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 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; 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.
//
// This product is not authorized for use as critical component in
// life support systems without the express written approval of
// ARW Elektronik Germany.
//
// Please announce changes and hints to ARW Elektronik
//
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de)
//
//****************************************************************************
//****************************************************************************
//
// pcicc32.h -- the common header for driver and applications for the PCICC32
// PCI to CAMAC Interface
//
// $Log: pcicc32.h,v $
// Revision 1.7 2004/08/12 19:59:19 klaus
// conversion to kernel-version 2.6, released version 6.0
//
// Revision 1.6 2002/10/15 19:01:17 klaus
// fixed bug in IOCTL defines
//
// Revision 1.5 2002/04/17 19:41:06 klaus
// added support for autoread
//
// Revision 1.4 2002/04/14 18:25:38 klaus
// added interrupt handling, driver 4.4. ...3.5.tar.gz
//
// Revision 1.3 2002/04/10 18:40:10 klaus
// compiled and modified on RedHat 7.2
//
// Revision 1.2 2001/11/20 20:12:50 klaus
// included new header and CVS log
//
//****************************************************************************
#include <asm/ioctl.h>
#define PCICC32_MAGIC ' '
typedef struct
{
char bConnected; /* the interface seems to be connected */
char bFail; /* a timeout failure is registered */
char bIrq; /* a LAM wants to generate a IRQ */
char bReserve; /* not yet used */
} PCICC32_STATUS;
typedef struct
{
char bEnable; /* set to 0 to disable, != 0 to enable */
} PCICC32_IRQ_CONTROL;
typedef struct
{
char bOn;
} PCICC32_AUTOREAD;
#define PCICC32_IOSTATE _IOR(PCICC32_MAGIC, 1, PCICC32_STATUS) /* get the status of PCICC32 */
#define PCICC32_IOCNTRL _IO(PCICC32_MAGIC, 2) /* reset a timeout failure, no parameters */
#define PCICC32_CONTROL_INTERRUPTS _IOWR(PCICC32_MAGIC, 3, PCICC32_IRQ_CONTROL) /* set, clear interrupt enable */
#define PCICC32_IOSTATE_BLOCKING _IOR(PCICC32_MAGIC, 4, PCICC32_STATUS) /* calls a blocking IO until interrupt */
#define PCICC32_AUTOREAD_SWITCH _IOWR(PCICC32_MAGIC, 4, PCICC32_AUTOREAD) /* switches autoread on or off */
// the returned cause of the interrupt
#define NOT_MY_INTERRUPT 0
#define PCIADA_INTERRUPT 1
#define CC32_INTERRUPT 2
// the LAM (interrupt) masks
#define LAM_IRQ 0x00FFFFFF // there was a LAM responible for the timeout
#define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timout
#define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending
#define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending
#define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending
#define LAM_FF 0x80000000 // the LAM-Flip-Flop was set
#endif /* __PCICC32_H__ */