1
2
3
4
5
6
7
8
9
10
11
12#ifndef __NSP_IO_H__
13#define __NSP_IO_H__
14
15static inline void nsp_write(unsigned int base,
16 unsigned int index,
17 unsigned char val);
18static inline unsigned char nsp_read(unsigned int base,
19 unsigned int index);
20static inline void nsp_index_write(unsigned int BaseAddr,
21 unsigned int Register,
22 unsigned char Value);
23static inline unsigned char nsp_index_read(unsigned int BaseAddr,
24 unsigned int Register);
25
26
27
28
29
30static inline void nsp_write(unsigned int base,
31 unsigned int index,
32 unsigned char val)
33{
34 outb(val, (base + index));
35}
36
37static inline unsigned char nsp_read(unsigned int base,
38 unsigned int index)
39{
40 return inb(base + index);
41}
42
43
44
45
46
47static inline unsigned char nsp_index_read(unsigned int BaseAddr,
48 unsigned int Register)
49{
50 outb(Register, BaseAddr + INDEXREG);
51 return inb(BaseAddr + DATAREG);
52}
53
54static inline void nsp_index_write(unsigned int BaseAddr,
55 unsigned int Register,
56 unsigned char Value)
57{
58 outb(Register, BaseAddr + INDEXREG);
59 outb(Value, BaseAddr + DATAREG);
60}
61
62
63
64
65
66
67static inline void nsp_multi_read_1(unsigned int BaseAddr,
68 unsigned int Register,
69 void *buf,
70 unsigned long count)
71{
72 insb(BaseAddr + Register, buf, count);
73}
74
75static inline void nsp_fifo8_read(unsigned int base,
76 void *buf,
77 unsigned long count)
78{
79
80 nsp_multi_read_1(base, FIFODATA, buf, count);
81}
82
83
84
85
86static inline void nsp_multi_read_2(unsigned int BaseAddr,
87 unsigned int Register,
88 void *buf,
89 unsigned long count)
90{
91 insw(BaseAddr + Register, buf, count);
92}
93
94static inline void nsp_fifo16_read(unsigned int base,
95 void *buf,
96 unsigned long count)
97{
98
99 nsp_multi_read_2(base, FIFODATA, buf, count);
100}
101
102
103
104
105static inline void nsp_multi_read_4(unsigned int BaseAddr,
106 unsigned int Register,
107 void *buf,
108 unsigned long count)
109{
110 insl(BaseAddr + Register, buf, count);
111}
112
113static inline void nsp_fifo32_read(unsigned int base,
114 void *buf,
115 unsigned long count)
116{
117
118 nsp_multi_read_4(base, FIFODATA, buf, count);
119}
120
121
122
123
124static inline void nsp_multi_write_1(unsigned int BaseAddr,
125 unsigned int Register,
126 void *buf,
127 unsigned long count)
128{
129 outsb(BaseAddr + Register, buf, count);
130}
131
132static inline void nsp_fifo8_write(unsigned int base,
133 void *buf,
134 unsigned long count)
135{
136 nsp_multi_write_1(base, FIFODATA, buf, count);
137}
138
139
140
141
142static inline void nsp_multi_write_2(unsigned int BaseAddr,
143 unsigned int Register,
144 void *buf,
145 unsigned long count)
146{
147 outsw(BaseAddr + Register, buf, count);
148}
149
150static inline void nsp_fifo16_write(unsigned int base,
151 void *buf,
152 unsigned long count)
153{
154 nsp_multi_write_2(base, FIFODATA, buf, count);
155}
156
157
158
159
160static inline void nsp_multi_write_4(unsigned int BaseAddr,
161 unsigned int Register,
162 void *buf,
163 unsigned long count)
164{
165 outsl(BaseAddr + Register, buf, count);
166}
167
168static inline void nsp_fifo32_write(unsigned int base,
169 void *buf,
170 unsigned long count)
171{
172 nsp_multi_write_4(base, FIFODATA, buf, count);
173}
174
175
176
177
178static inline void nsp_mmio_write(unsigned long base,
179 unsigned int index,
180 unsigned char val)
181{
182 unsigned char *ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + index);
183
184 writeb(val, ptr);
185}
186
187static inline unsigned char nsp_mmio_read(unsigned long base,
188 unsigned int index)
189{
190 unsigned char *ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + index);
191
192 return readb(ptr);
193}
194
195
196
197static inline unsigned char nsp_mmio_index_read(unsigned long base,
198 unsigned int reg)
199{
200 unsigned char *index_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + INDEXREG);
201 unsigned char *data_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + DATAREG);
202
203 writeb((unsigned char)reg, index_ptr);
204 return readb(data_ptr);
205}
206
207static inline void nsp_mmio_index_write(unsigned long base,
208 unsigned int reg,
209 unsigned char val)
210{
211 unsigned char *index_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + INDEXREG);
212 unsigned char *data_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + DATAREG);
213
214 writeb((unsigned char)reg, index_ptr);
215 writeb(val, data_ptr);
216}
217
218
219static inline void nsp_mmio_multi_read_4(unsigned long base,
220 unsigned int Register,
221 void *buf,
222 unsigned long count)
223{
224 unsigned long *ptr = (unsigned long *)(base + Register);
225 unsigned long *tmp = (unsigned long *)buf;
226 int i;
227
228
229
230 for (i = 0; i < count; i++) {
231 *tmp = readl(ptr);
232
233 tmp++;
234 }
235}
236
237static inline void nsp_mmio_fifo32_read(unsigned int base,
238 void *buf,
239 unsigned long count)
240{
241
242 nsp_mmio_multi_read_4(base, FIFODATA, buf, count);
243}
244
245static inline void nsp_mmio_multi_write_4(unsigned long base,
246 unsigned int Register,
247 void *buf,
248 unsigned long count)
249{
250 unsigned long *ptr = (unsigned long *)(base + Register);
251 unsigned long *tmp = (unsigned long *)buf;
252 int i;
253
254
255
256 for (i = 0; i < count; i++) {
257 writel(*tmp, ptr);
258
259 tmp++;
260 }
261}
262
263static inline void nsp_mmio_fifo32_write(unsigned int base,
264 void *buf,
265 unsigned long count)
266{
267
268 nsp_mmio_multi_write_4(base, FIFODATA, buf, count);
269}
270
271
272
273#endif
274
275