Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
86 | f9daq | 1 | #ifndef __CC32LIB_H__ |
2 | #define __CC32LIB_H__ |
||
3 | //**************************************************************************** |
||
4 | // Copyright (C) 2000-2004 ARW Elektronik Germany |
||
5 | // |
||
6 | // |
||
7 | // This program is free software; you can redistribute it and/or modify |
||
8 | // it under the terms of the GNU Lesser General Public License as published by |
||
9 | // the Free Software Foundation; either version 2 of the License, or |
||
10 | // (at your option) any later version. |
||
11 | // |
||
12 | // This program is distributed in the hope that it will be useful, |
||
13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
15 | // GNU General Public License for more details. |
||
16 | // |
||
17 | // You should have received a copy of the GNU General Public License |
||
18 | // along with this program; if not, write to the Free Software |
||
19 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
||
20 | // |
||
21 | // This product is not authorized for use as critical component in |
||
22 | // life support systems without the express written approval of |
||
23 | // ARW Elektronik Germany. |
||
24 | // |
||
25 | // Please announce changes and hints to ARW Elektronik |
||
26 | // |
||
27 | // Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
||
28 | // |
||
29 | //**************************************************************************** |
||
30 | |||
31 | //**************************************************************************** |
||
32 | // |
||
33 | // cc32lib.h -- header for a simple access library for the |
||
34 | // PCICC32 PCI to CAMAC Interface |
||
35 | // |
||
36 | // $Log: libcc32.h,v $ |
||
37 | // Revision 1.9 2005/10/03 17:46:31 klaus |
||
38 | // simple cosmetic changes, upgrade lib to libcc32.so.3.0.0 |
||
39 | // |
||
40 | // Revision 1.8 2004/11/29 20:43:12 klaus |
||
41 | // added _qx functions to get Q and X for every transfer. Release libcc32.so.2. |
||
42 | // |
||
43 | // Revision 1.7 2004/08/13 19:48:25 klaus |
||
44 | // changed license from GPL to LGPL |
||
45 | // |
||
46 | // Revision 1.6 2004/08/12 20:00:41 klaus |
||
47 | // conversion to kernel-version 2.6, released version 6.0 |
||
48 | // |
||
49 | // Revision 1.5 2003/05/29 08:29:08 klaus |
||
50 | // added _cplusplus extention |
||
51 | // |
||
52 | // Revision 1.4 2002/04/17 19:41:06 klaus |
||
53 | // added support for autoread |
||
54 | // |
||
55 | // Revision 1.3 2002/04/14 18:25:38 klaus |
||
56 | // added interrupt handling, driver 4.4. ...3.5.tar.gz |
||
57 | // |
||
58 | // Revision 1.2 2001/11/20 20:12:50 klaus |
||
59 | // included new header and CVS log |
||
60 | // |
||
61 | //**************************************************************************** |
||
62 | |||
63 | /*--- INCLUDES --------------------------------------------------------------------------*/ |
||
64 | #include <asm/types.h> |
||
65 | |||
66 | /*--- TYPEDEFS --------------------------------------------------------------------------*/ |
||
67 | typedef void* CC32_HANDLE; /* type of the device handle */ |
||
68 | |||
69 | /*--- DEFINES ---------------------------------------------------------------------------*/ |
||
70 | |||
71 | /*--- PROTOTYPES ------------------------------------------------------------------------*/ |
||
72 | #ifdef __cplusplus |
||
73 | extern "C" |
||
74 | { |
||
75 | #endif |
||
76 | |||
77 | /* open a path to a device. E.g. "/dev/pcicc32_1" */ |
||
78 | int cc32_open(char *cszPath, CC32_HANDLE *handle); |
||
79 | |||
80 | /* close the opened path */ |
||
81 | int cc32_close(CC32_HANDLE handle); |
||
82 | |||
83 | /* read only a word - 16 bits - from a address made out of N,A,F */ |
||
84 | __u16 cc32_read_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F); |
||
85 | |||
86 | /* read only a word - 16 bits - from a address made out of N,A,F, get Q and X */ |
||
87 | __u16 cc32_read_word_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, int *Q, int *X); |
||
88 | |||
89 | /* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */ |
||
90 | __u32 cc32_read_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F); |
||
91 | |||
92 | /* read a long - 32 bits - from a address made out of N,A,F get Q and X */ |
||
93 | __u32 cc32_read_long_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, int *Q, int *X); |
||
94 | |||
95 | /* read a long - 32 bits - without any interpretaion */ |
||
96 | __u32 cc32_read_long_all(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F); |
||
97 | |||
98 | /* write a word - 16 bits - to a destination made out of N,A,F */ |
||
99 | void cc32_write_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u16 uwData); |
||
100 | |||
101 | /* write a word - 16 bits - to a destination made out of N,A,F, get Q and X */ |
||
102 | void cc32_write_word_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u16 uwData, int *Q, int *X); |
||
103 | |||
104 | /* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */ |
||
105 | void cc32_write_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u32 ulData); |
||
106 | |||
107 | /* write a long - 32 bits - uninterpreted to a destination made out of N,A,F, get Q and X */ |
||
108 | void cc32_write_long_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u32 ulData, int *Q, int *X); |
||
109 | |||
110 | /* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */ |
||
111 | int cc32_poll_event(CC32_HANDLE handle, int *nTimeout, int *nLam); |
||
112 | |||
113 | /* control interrupts caused by timeouts or LAMs */ |
||
114 | int cc32_interrupt_disable(CC32_HANDLE handle); |
||
115 | int cc32_interrupt_enable(CC32_HANDLE handle); |
||
116 | |||
117 | /* same as cc32_poll_event(), but wait for a state change of timeout or LAMs. */ |
||
118 | int cc32_wait_event(CC32_HANDLE handle, int *nTimeout, int *nLam); |
||
119 | |||
120 | /* switch cc32 autoread on or off - return the last switch state */ |
||
121 | int cc32_autoread_on(CC32_HANDLE handle); |
||
122 | int cc32_autoread_off(CC32_HANDLE handle); |
||
123 | |||
124 | #ifdef __cplusplus |
||
125 | } |
||
126 | #endif |
||
127 | |||
128 | #endif /* __CC32LIB_H__ */ |