0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef __NSP_IO_H__
0013 #define __NSP_IO_H__
0014
0015 static inline void nsp_write(unsigned int base,
0016 unsigned int index,
0017 unsigned char val);
0018 static inline unsigned char nsp_read(unsigned int base,
0019 unsigned int index);
0020 static inline void nsp_index_write(unsigned int BaseAddr,
0021 unsigned int Register,
0022 unsigned char Value);
0023 static inline unsigned char nsp_index_read(unsigned int BaseAddr,
0024 unsigned int Register);
0025
0026
0027
0028
0029
0030 static inline void nsp_write(unsigned int base,
0031 unsigned int index,
0032 unsigned char val)
0033 {
0034 outb(val, (base + index));
0035 }
0036
0037 static inline unsigned char nsp_read(unsigned int base,
0038 unsigned int index)
0039 {
0040 return inb(base + index);
0041 }
0042
0043
0044
0045
0046
0047 static inline unsigned char nsp_index_read(unsigned int BaseAddr,
0048 unsigned int Register)
0049 {
0050 outb(Register, BaseAddr + INDEXREG);
0051 return inb(BaseAddr + DATAREG);
0052 }
0053
0054 static inline void nsp_index_write(unsigned int BaseAddr,
0055 unsigned int Register,
0056 unsigned char Value)
0057 {
0058 outb(Register, BaseAddr + INDEXREG);
0059 outb(Value, BaseAddr + DATAREG);
0060 }
0061
0062
0063
0064
0065
0066
0067 static inline void nsp_multi_read_1(unsigned int BaseAddr,
0068 unsigned int Register,
0069 void *buf,
0070 unsigned long count)
0071 {
0072 insb(BaseAddr + Register, buf, count);
0073 }
0074
0075 static inline void nsp_fifo8_read(unsigned int base,
0076 void *buf,
0077 unsigned long count)
0078 {
0079
0080 nsp_multi_read_1(base, FIFODATA, buf, count);
0081 }
0082
0083
0084
0085
0086 static inline void nsp_multi_read_2(unsigned int BaseAddr,
0087 unsigned int Register,
0088 void *buf,
0089 unsigned long count)
0090 {
0091 insw(BaseAddr + Register, buf, count);
0092 }
0093
0094 static inline void nsp_fifo16_read(unsigned int base,
0095 void *buf,
0096 unsigned long count)
0097 {
0098
0099 nsp_multi_read_2(base, FIFODATA, buf, count);
0100 }
0101
0102
0103
0104
0105 static inline void nsp_multi_read_4(unsigned int BaseAddr,
0106 unsigned int Register,
0107 void *buf,
0108 unsigned long count)
0109 {
0110 insl(BaseAddr + Register, buf, count);
0111 }
0112
0113 static inline void nsp_fifo32_read(unsigned int base,
0114 void *buf,
0115 unsigned long count)
0116 {
0117
0118 nsp_multi_read_4(base, FIFODATA, buf, count);
0119 }
0120
0121
0122
0123
0124 static inline void nsp_multi_write_1(unsigned int BaseAddr,
0125 unsigned int Register,
0126 void *buf,
0127 unsigned long count)
0128 {
0129 outsb(BaseAddr + Register, buf, count);
0130 }
0131
0132 static inline void nsp_fifo8_write(unsigned int base,
0133 void *buf,
0134 unsigned long count)
0135 {
0136 nsp_multi_write_1(base, FIFODATA, buf, count);
0137 }
0138
0139
0140
0141
0142 static inline void nsp_multi_write_2(unsigned int BaseAddr,
0143 unsigned int Register,
0144 void *buf,
0145 unsigned long count)
0146 {
0147 outsw(BaseAddr + Register, buf, count);
0148 }
0149
0150 static inline void nsp_fifo16_write(unsigned int base,
0151 void *buf,
0152 unsigned long count)
0153 {
0154 nsp_multi_write_2(base, FIFODATA, buf, count);
0155 }
0156
0157
0158
0159
0160 static inline void nsp_multi_write_4(unsigned int BaseAddr,
0161 unsigned int Register,
0162 void *buf,
0163 unsigned long count)
0164 {
0165 outsl(BaseAddr + Register, buf, count);
0166 }
0167
0168 static inline void nsp_fifo32_write(unsigned int base,
0169 void *buf,
0170 unsigned long count)
0171 {
0172 nsp_multi_write_4(base, FIFODATA, buf, count);
0173 }
0174
0175
0176
0177
0178 static inline void nsp_mmio_write(unsigned long base,
0179 unsigned int index,
0180 unsigned char val)
0181 {
0182 unsigned char *ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + index);
0183
0184 writeb(val, ptr);
0185 }
0186
0187 static inline unsigned char nsp_mmio_read(unsigned long base,
0188 unsigned int index)
0189 {
0190 unsigned char *ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + index);
0191
0192 return readb(ptr);
0193 }
0194
0195
0196
0197 static inline unsigned char nsp_mmio_index_read(unsigned long base,
0198 unsigned int reg)
0199 {
0200 unsigned char *index_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + INDEXREG);
0201 unsigned char *data_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + DATAREG);
0202
0203 writeb((unsigned char)reg, index_ptr);
0204 return readb(data_ptr);
0205 }
0206
0207 static inline void nsp_mmio_index_write(unsigned long base,
0208 unsigned int reg,
0209 unsigned char val)
0210 {
0211 unsigned char *index_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + INDEXREG);
0212 unsigned char *data_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + DATAREG);
0213
0214 writeb((unsigned char)reg, index_ptr);
0215 writeb(val, data_ptr);
0216 }
0217
0218
0219 static inline void nsp_mmio_multi_read_4(unsigned long base,
0220 unsigned int Register,
0221 void *buf,
0222 unsigned long count)
0223 {
0224 unsigned long *ptr = (unsigned long *)(base + Register);
0225 unsigned long *tmp = (unsigned long *)buf;
0226 int i;
0227
0228
0229
0230 for (i = 0; i < count; i++) {
0231 *tmp = readl(ptr);
0232
0233 tmp++;
0234 }
0235 }
0236
0237 static inline void nsp_mmio_fifo32_read(unsigned int base,
0238 void *buf,
0239 unsigned long count)
0240 {
0241
0242 nsp_mmio_multi_read_4(base, FIFODATA, buf, count);
0243 }
0244
0245 static inline void nsp_mmio_multi_write_4(unsigned long base,
0246 unsigned int Register,
0247 void *buf,
0248 unsigned long count)
0249 {
0250 unsigned long *ptr = (unsigned long *)(base + Register);
0251 unsigned long *tmp = (unsigned long *)buf;
0252 int i;
0253
0254
0255
0256 for (i = 0; i < count; i++) {
0257 writel(*tmp, ptr);
0258
0259 tmp++;
0260 }
0261 }
0262
0263 static inline void nsp_mmio_fifo32_write(unsigned int base,
0264 void *buf,
0265 unsigned long count)
0266 {
0267
0268 nsp_mmio_multi_write_4(base, FIFODATA, buf, count);
0269 }
0270
0271
0272
0273 #endif
0274