ARPDAS_QNX6 1.0
subbus.h
Go to the documentation of this file.
00001 /** @file
00002  subbus.h defines the interface to the subbus resident library
00003  Before calling the subbus routines, you must first call
00004  load_subbus().  This returns the subfunction of the resident
00005  subbus library or 0 if none is installed.
00006  */
00007 #ifndef SUBBUS_H_INCLUDED
00008 #define SUBBUS_H_INCLUDED
00009 #include <sys/siginfo.h>
00010 
00011 #ifdef __cplusplus
00012 extern "C" {
00013 #endif
00014 
00015 
00016 /* Subbus subfunction codes: These define the hardware that talks
00017    to the subbus. It does not talk about the interface between
00018    the library and the system controller itself.
00019  */
00020 #define SB_PCICC 1
00021 #define SB_PCICCSIC 2
00022 #define SB_SYSCON 3
00023 #define SB_SYSCON104 4
00024 #define SB_SYSCONDACS 5
00025 
00026 /* subbus_features: */
00027 #define SBF_SIC 1               /* SIC Functions */
00028 #define SBF_LG_RAM 2    /* Large NVRAM */
00029 #define SBF_HW_CNTS 4   /* Hardware rst & pwr Counters */
00030 #define SBF_WD 8                /* Watchdog functions */
00031 #define SBF_SET_FAIL 0x10 /* Set failure lamp */
00032 #define SBF_READ_FAIL 0x20 /* Read failure lamps */
00033 #define SBF_READ_SW 0x40 /* Read Switches */
00034 #define SBF_NVRAM 0x80   /* Any NVRAM at all! */
00035 #define SBF_CMDSTROBE 0x100 /* CmdStrobe Function */
00036 
00037 typedef struct __attribute__((__packed__)) {
00038   unsigned short req_len;
00039   unsigned short n_reads;
00040   char multread_cmd[256];
00041 } subbus_mread_req;
00042 
00043 extern int load_subbus(void);
00044 
00045 extern unsigned short subbus_version;
00046 extern unsigned short subbus_features;
00047 extern unsigned short subbus_subfunction;
00048 extern unsigned short read_subbus(unsigned short addr);
00049 extern int write_ack(unsigned short addr, unsigned short data);
00050 extern int read_ack(unsigned short addr, unsigned short *data);
00051 #define write_subbus(x,y) write_ack(x,y)
00052 extern subbus_mread_req *pack_mread_request( int n_reads, const char *req );
00053 extern subbus_mread_req *pack_mread_requests( unsigned int addr, ... );
00054 extern int mread_subbus( subbus_mread_req *req, unsigned short *data);
00055 extern int set_cmdenbl(int value);
00056 extern int set_cmdstrobe(int value);
00057 extern unsigned short read_switches(void);
00058 extern int set_failure(unsigned short value);
00059 extern unsigned short read_failure(void);
00060 extern int  tick_sic(void);
00061 extern int disarm_sic(void);
00062 extern char *get_subbus_name(void);
00063 #define subbus_name get_subbus_name()
00064 extern int cache_write(unsigned short addr, unsigned short data);
00065 extern unsigned short cache_read(unsigned short addr);
00066 
00067 extern unsigned short sbrb(unsigned short addr);
00068 extern unsigned short sbrba(unsigned short addr);
00069 #define sbrw(x) read_subbus(x)
00070 extern unsigned int sbrwa(unsigned short addr);
00071 #define sbwr(x,y) write_ack(x,y)
00072 #define sbwra(x,y) write_ack(x,y)
00073 
00074 extern int subbus_int_attach( char *cardID, unsigned short address,
00075       unsigned short region, struct sigevent *event );
00076 extern int subbus_int_detach( char *cardID );
00077 extern int subbus_quit(void);
00078 
00079 #ifdef __cplusplus
00080 };
00081 #endif
00082 
00083 #endif
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines