00001 #ifndef _DEV_SPPIF0_H_
00002 #define _DEV_SPPIF0_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00052 #include <cfg/arch/gpio.h>
00053 #include <stdint.h>
00054
00058 #ifndef SPPI0_MAX_DEVICES
00059 #define SPPI0_MAX_DEVICES 4
00060 #endif
00061
00062 #if defined(__AVR__)
00063
00064
00065
00066
00067
00068 #ifdef SPPI0_CS0_BIT
00069
00070 #if (SPPI0_CS0_AVRPORT == AVRPORTB)
00071 #define SPPI0_CS0_SOD_REG PORTB
00072 #define SPPI0_CS0_OE_REG DDRB
00073 #elif (SPPI0_CS0_AVRPORT == AVRPORTD)
00074 #define SPPI0_CS0_SOD_REG PORTD
00075 #define SPPI0_CS0_OE_REG DDRD
00076 #elif (SPPI0_CS0_AVRPORT == AVRPORTE)
00077 #define SPPI0_CS0_SOD_REG PORTE
00078 #define SPPI0_CS0_OE_REG DDRE
00079 #elif (SPPI0_CS0_AVRPORT == AVRPORTF)
00080 #define SPPI0_CS0_SOD_REG PORTF
00081 #define SPPI0_CS0_OE_REG DDRF
00082 #elif (SPPI0_CS0_AVRPORT == AVRPORTG)
00083 #define SPPI0_CS0_SOD_REG PORTG
00084 #define SPPI0_CS0_OE_REG DDRG
00085 #elif (SPPI0_CS0_AVRPORT == AVRPORTH)
00086 #define SPPI0_CS0_SOD_REG PORTH
00087 #define SPPI0_CS0_OE_REG DDRH
00088 #endif
00089
00091 #define SPPI0_CS0_ENA() sbi(SPPI0_CS0_OE_REG, SPPI0_CS0_BIT)
00092
00093 #define SPPI0_CS0_CLR() cbi(SPPI0_CS0_SOD_REG, SPPI0_CS0_BIT)
00094
00095 #define SPPI0_CS0_SET() sbi(SPPI0_CS0_SOD_REG, SPPI0_CS0_BIT)
00096
00097 #endif
00098
00099 #ifdef SPPI0_CS1_BIT
00100
00101 #if (SPPI0_CS1_AVRPORT == AVRPORTB)
00102 #define SPPI0_CS1_SOD_REG PORTB
00103 #define SPPI0_CS1_OE_REG DDRB
00104 #elif (SPPI0_CS1_AVRPORT == AVRPORTD)
00105 #define SPPI0_CS1_SOD_REG PORTD
00106 #define SPPI0_CS1_OE_REG DDRD
00107 #elif (SPPI0_CS1_AVRPORT == AVRPORTE)
00108 #define SPPI0_CS1_SOD_REG PORTE
00109 #define SPPI0_CS1_OE_REG DDRE
00110 #elif (SPPI0_CS1_AVRPORT == AVRPORTF)
00111 #define SPPI0_CS1_SOD_REG PORTF
00112 #define SPPI0_CS1_OE_REG DDRF
00113 #elif (SPPI0_CS1_AVRPORT == AVRPORTG)
00114 #define SPPI0_CS1_SOD_REG PORTG
00115 #define SPPI0_CS1_OE_REG DDRG
00116 #elif (SPPI0_CS1_AVRPORT == AVRPORTH)
00117 #define SPPI0_CS1_SOD_REG PORTH
00118 #define SPPI0_CS1_OE_REG DDRH
00119 #endif
00120
00122 #define SPPI0_CS1_ENA() sbi(SPPI0_CS1_OE_REG, SPPI0_CS1_BIT)
00123
00124 #define SPPI0_CS1_CLR() cbi(SPPI0_CS1_SOD_REG, SPPI0_CS1_BIT)
00125
00126 #define SPPI0_CS1_SET() sbi(SPPI0_CS1_SOD_REG, SPPI0_CS1_BIT)
00127
00128 #endif
00129
00130 #ifdef SPPI0_CS2_BIT
00131
00132 #if (SPPI0_CS2_AVRPORT == AVRPORTB)
00133 #define SPPI0_CS2_SOD_REG PORTB
00134 #define SPPI0_CS2_OE_REG DDRB
00135 #elif (SPPI0_CS2_AVRPORT == AVRPORTD)
00136 #define SPPI0_CS2_SOD_REG PORTD
00137 #define SPPI0_CS2_OE_REG DDRD
00138 #elif (SPPI0_CS2_AVRPORT == AVRPORTE)
00139 #define SPPI0_CS2_SOD_REG PORTE
00140 #define SPPI0_CS2_OE_REG DDRE
00141 #elif (SPPI0_CS2_AVRPORT == AVRPORTF)
00142 #define SPPI0_CS2_SOD_REG PORTF
00143 #define SPPI0_CS2_OE_REG DDRF
00144 #elif (SPPI0_CS2_AVRPORT == AVRPORTG)
00145 #define SPPI0_CS2_SOD_REG PORTG
00146 #define SPPI0_CS2_OE_REG DDRG
00147 #elif (SPPI0_CS2_AVRPORT == AVRPORTH)
00148 #define SPPI0_CS2_SOD_REG PORTH
00149 #define SPPI0_CS2_OE_REG DDRH
00150 #endif
00151
00153 #define SPPI0_CS2_ENA() sbi(SPPI0_CS2_OE_REG, SPPI0_CS2_BIT)
00154
00155 #define SPPI0_CS2_CLR() cbi(SPPI0_CS2_SOD_REG, SPPI0_CS2_BIT)
00156
00157 #define SPPI0_CS2_SET() sbi(SPPI0_CS2_SOD_REG, SPPI0_CS2_BIT)
00158
00159 #endif
00160
00161 #ifdef SPPI0_CS3_BIT
00162
00163 #if (SPPI0_CS3_AVRPORT == AVRPORTB)
00164 #define SPPI0_CS3_SOD_REG PORTB
00165 #define SPPI0_CS3_OE_REG DDRB
00166 #elif (SPPI0_CS3_AVRPORT == AVRPORTD)
00167 #define SPPI0_CS3_SOD_REG PORTD
00168 #define SPPI0_CS3_OE_REG DDRD
00169 #elif (SPPI0_CS3_AVRPORT == AVRPORTE)
00170 #define SPPI0_CS3_SOD_REG PORTE
00171 #define SPPI0_CS3_OE_REG DDRE
00172 #elif (SPPI0_CS3_AVRPORT == AVRPORTF)
00173 #define SPPI0_CS3_SOD_REG PORTF
00174 #define SPPI0_CS3_OE_REG DDRF
00175 #elif (SPPI0_CS3_AVRPORT == AVRPORTG)
00176 #define SPPI0_CS3_SOD_REG PORTG
00177 #define SPPI0_CS3_OE_REG DDRG
00178 #elif (SPPI0_CS3_AVRPORT == AVRPORTH)
00179 #define SPPI0_CS3_SOD_REG PORTH
00180 #define SPPI0_CS3_OE_REG DDRH
00181 #endif
00182
00184 #define SPPI0_CS3_ENA() sbi(SPPI0_CS3_OE_REG, SPPI0_CS3_BIT)
00185
00186 #define SPPI0_CS3_CLR() cbi(SPPI0_CS3_SOD_REG, SPPI0_CS3_BIT)
00187
00188 #define SPPI0_CS3_SET() sbi(SPPI0_CS3_SOD_REG, SPPI0_CS3_BIT)
00189
00190 #endif
00191
00192 #ifdef SPPI0_RST0_BIT
00193
00194 #if (SPPI0_RST0_AVRPORT == AVRPORTB)
00195 #define SPPI0_RST0_SOD_REG PORTB
00196 #define SPPI0_RST0_OE_REG DDRB
00197 #elif (SPPI0_RST0_AVRPORT == AVRPORTD)
00198 #define SPPI0_RST0_SOD_REG PORTD
00199 #define SPPI0_RST0_OE_REG DDRD
00200 #elif (SPPI0_RST0_AVRPORT == AVRPORTE)
00201 #define SPPI0_RST0_SOD_REG PORTE
00202 #define SPPI0_RST0_OE_REG DDRE
00203 #elif (SPPI0_RST0_AVRPORT == AVRPORTF)
00204 #define SPPI0_RST0_SOD_REG PORTF
00205 #define SPPI0_RST0_OE_REG DDRF
00206 #elif (SPPI0_RST0_AVRPORT == AVRPORTG)
00207 #define SPPI0_RST0_SOD_REG PORTG
00208 #define SPPI0_RST0_OE_REG DDRG
00209 #elif (SPPI0_RST0_AVRPORT == AVRPORTH)
00210 #define SPPI0_RST0_SOD_REG PORTH
00211 #define SPPI0_RST0_OE_REG DDRH
00212 #endif
00213
00215 #define SPPI0_RST0_ENA() sbi(SPPI0_RST0_OE_REG, SPPI0_RST0_BIT)
00216
00217 #define SPPI0_RST0_CLR() cbi(SPPI0_RST0_SOD_REG, SPPI0_RST0_BIT)
00218
00219 #define SPPI0_RST0_SET() sbi(SPPI0_RST0_SOD_REG, SPPI0_RST0_BIT)
00220
00221 #endif
00222
00223 #ifdef SPPI0_RST1_BIT
00224
00225 #if (SPPI0_RST1_AVRPORT == AVRPORTB)
00226 #define SPPI0_RST1_SOD_REG PORTB
00227 #define SPPI0_RST1_OE_REG DDRB
00228 #elif (SPPI0_RST1_AVRPORT == AVRPORTD)
00229 #define SPPI0_RST1_SOD_REG PORTD
00230 #define SPPI0_RST1_OE_REG DDRD
00231 #elif (SPPI0_RST1_AVRPORT == AVRPORTE)
00232 #define SPPI0_RST1_SOD_REG PORTE
00233 #define SPPI0_RST1_OE_REG DDRE
00234 #elif (SPPI0_RST1_AVRPORT == AVRPORTF)
00235 #define SPPI0_RST1_SOD_REG PORTF
00236 #define SPPI0_RST1_OE_REG DDRF
00237 #elif (SPPI0_RST1_AVRPORT == AVRPORTG)
00238 #define SPPI0_RST1_SOD_REG PORTG
00239 #define SPPI0_RST1_OE_REG DDRG
00240 #elif (SPPI0_RST1_AVRPORT == AVRPORTH)
00241 #define SPPI0_RST1_SOD_REG PORTH
00242 #define SPPI0_RST1_OE_REG DDRH
00243 #endif
00244
00246 #define SPPI0_RST1_ENA() sbi(SPPI0_RST1_OE_REG, SPPI0_RST1_BIT)
00247
00248 #define SPPI0_RST1_CLR() cbi(SPPI0_RST1_SOD_REG, SPPI0_RST1_BIT)
00249
00250 #define SPPI0_RST1_SET() sbi(SPPI0_RST1_SOD_REG, SPPI0_RST1_BIT)
00251
00252 #endif
00253
00254 #ifdef SPPI0_RST2_BIT
00255
00256 #if (SPPI0_RST2_AVRPORT == AVRPORTB)
00257 #define SPPI0_RST2_SOD_REG PORTB
00258 #define SPPI0_RST2_OE_REG DDRB
00259 #elif (SPPI0_RST2_AVRPORT == AVRPORTD)
00260 #define SPPI0_RST2_SOD_REG PORTD
00261 #define SPPI0_RST2_OE_REG DDRD
00262 #elif (SPPI0_RST2_AVRPORT == AVRPORTE)
00263 #define SPPI0_RST2_SOD_REG PORTE
00264 #define SPPI0_RST2_OE_REG DDRE
00265 #elif (SPPI0_RST2_AVRPORT == AVRPORTF)
00266 #define SPPI0_RST2_SOD_REG PORTF
00267 #define SPPI0_RST2_OE_REG DDRF
00268 #elif (SPPI0_RST2_AVRPORT == AVRPORTG)
00269 #define SPPI0_RST2_SOD_REG PORTG
00270 #define SPPI0_RST2_OE_REG DDRG
00271 #elif (SPPI0_RST2_AVRPORT == AVRPORTH)
00272 #define SPPI0_RST2_SOD_REG PORTH
00273 #define SPPI0_RST2_OE_REG DDRH
00274 #endif
00275
00277 #define SPPI0_RST2_ENA() sbi(SPPI0_RST2_OE_REG, SPPI0_RST2_BIT)
00278
00279 #define SPPI0_RST2_CLR() cbi(SPPI0_RST2_SOD_REG, SPPI0_RST2_BIT)
00280
00281 #define SPPI0_RST2_SET() sbi(SPPI0_RST2_SOD_REG, SPPI0_RST2_BIT)
00282
00283 #endif
00284
00285 #ifdef SPPI0_RST3_BIT
00286
00287 #if (SPPI0_RST3_AVRPORT == AVRPORTB)
00288 #define SPPI0_RST3_SOD_REG PORTB
00289 #define SPPI0_RST3_OE_REG DDRB
00290 #elif (SPPI0_RST3_AVRPORT == AVRPORTD)
00291 #define SPPI0_RST3_SOD_REG PORTD
00292 #define SPPI0_RST3_OE_REG DDRD
00293 #elif (SPPI0_RST3_AVRPORT == AVRPORTE)
00294 #define SPPI0_RST3_SOD_REG PORTE
00295 #define SPPI0_RST3_OE_REG DDRE
00296 #elif (SPPI0_RST3_AVRPORT == AVRPORTF)
00297 #define SPPI0_RST3_SOD_REG PORTF
00298 #define SPPI0_RST3_OE_REG DDRF
00299 #elif (SPPI0_RST3_AVRPORT == AVRPORTG)
00300 #define SPPI0_RST3_SOD_REG PORTG
00301 #define SPPI0_RST3_OE_REG DDRG
00302 #elif (SPPI0_RST3_AVRPORT == AVRPORTH)
00303 #define SPPI0_RST3_SOD_REG PORTH
00304 #define SPPI0_RST3_OE_REG DDRH
00305 #endif
00306
00308 #define SPPI0_RST3_ENA() sbi(SPPI0_RST3_OE_REG, SPPI0_RST3_BIT)
00309
00310 #define SPPI0_RST3_CLR() cbi(SPPI0_RST3_SOD_REG, SPPI0_RST3_BIT)
00311
00312 #define SPPI0_RST3_SET() sbi(SPPI0_RST3_SOD_REG, SPPI0_RST3_BIT)
00313
00314 #endif
00315
00316
00317 #else
00318
00319
00320
00321
00322
00323 #ifdef SPPI0_CS0_BIT
00324
00325 #if !defined(SPPI0_CS0_PIO_ID)
00326 #define SPPI0_CS0_PE_REG PIO_PER
00327 #define SPPI0_CS0_OE_REG PIO_OER
00328 #define SPPI0_CS0_COD_REG PIO_CODR
00329 #define SPPI0_CS0_SOD_REG PIO_SODR
00330 #elif SPPI0_CS0_PIO_ID == PIO_ID
00331 #define SPPI0_CS0_PE_REG PIO_PER
00332 #define SPPI0_CS0_OE_REG PIO_OER
00333 #define SPPI0_CS0_COD_REG PIO_CODR
00334 #define SPPI0_CS0_SOD_REG PIO_SODR
00335 #elif SPPI0_CS0_PIO_ID == PIOA_ID
00336 #define SPPI0_CS0_PE_REG PIOA_PER
00337 #define SPPI0_CS0_OE_REG PIOA_OER
00338 #define SPPI0_CS0_COD_REG PIOA_CODR
00339 #define SPPI0_CS0_SOD_REG PIOA_SODR
00340 #elif SPPI0_CS0_PIO_ID == PIOB_ID
00341 #define SPPI0_CS0_PE_REG PIOB_PER
00342 #define SPPI0_CS0_OE_REG PIOB_OER
00343 #define SPPI0_CS0_COD_REG PIOB_CODR
00344 #define SPPI0_CS0_SOD_REG PIOB_SODR
00345 #elif SPPI0_CS0_PIO_ID == PIOC_ID
00346 #define SPPI0_CS0_PE_REG PIOC_PER
00347 #define SPPI0_CS0_OE_REG PIOC_OER
00348 #define SPPI0_CS0_COD_REG PIOC_CODR
00349 #define SPPI0_CS0_SOD_REG PIOC_SODR
00350 #endif
00351
00353 #define SPPI0_CS0_ENA() \
00354 outr(SPPI0_CS0_PE_REG, _BV(SPPI0_CS0_BIT)); \
00355 outr(SPPI0_CS0_OE_REG, _BV(SPPI0_CS0_BIT))
00356
00357 #define SPPI0_CS0_CLR() outr(SPPI0_CS0_COD_REG, _BV(SPPI0_CS0_BIT))
00358
00359 #define SPPI0_CS0_SET() outr(SPPI0_CS0_SOD_REG, _BV(SPPI0_CS0_BIT))
00360
00361 #endif
00362
00363 #ifdef SPPI0_CS1_BIT
00364
00365 #if !defined(SPPI0_CS1_PIO_ID)
00366 #define SPPI0_CS1_PE_REG PIO_PER
00367 #define SPPI0_CS1_OE_REG PIO_OER
00368 #define SPPI0_CS1_COD_REG PIO_CODR
00369 #define SPPI0_CS1_SOD_REG PIO_SODR
00370 #elif SPPI0_CS1_PIO_ID == PIO_ID
00371 #define SPPI0_CS1_PE_REG PIO_PER
00372 #define SPPI0_CS1_OE_REG PIO_OER
00373 #define SPPI0_CS1_COD_REG PIO_CODR
00374 #define SPPI0_CS1_SOD_REG PIO_SODR
00375 #elif SPPI0_CS1_PIO_ID == PIOA_ID
00376 #define SPPI0_CS1_PE_REG PIOA_PER
00377 #define SPPI0_CS1_OE_REG PIOA_OER
00378 #define SPPI0_CS1_COD_REG PIOA_CODR
00379 #define SPPI0_CS1_SOD_REG PIOA_SODR
00380 #elif SPPI0_CS1_PIO_ID == PIOB_ID
00381 #define SPPI0_CS1_PE_REG PIOB_PER
00382 #define SPPI0_CS1_OE_REG PIOB_OER
00383 #define SPPI0_CS1_COD_REG PIOB_CODR
00384 #define SPPI0_CS1_SOD_REG PIOB_SODR
00385 #elif SPPI0_CS1_PIO_ID == PIOC_ID
00386 #define SPPI0_CS1_PE_REG PIOC_PER
00387 #define SPPI0_CS1_OE_REG PIOC_OER
00388 #define SPPI0_CS1_COD_REG PIOC_CODR
00389 #define SPPI0_CS1_SOD_REG PIOC_SODR
00390 #endif
00391
00393 #define SPPI0_CS1_ENA() \
00394 outr(SPPI0_CS1_PE_REG, _BV(SPPI0_CS1_BIT)); \
00395 outr(SPPI0_CS1_OE_REG, _BV(SPPI0_CS1_BIT))
00396
00397 #define SPPI0_CS1_CLR() outr(SPPI0_CS1_COD_REG, _BV(SPPI0_CS1_BIT))
00398
00399 #define SPPI0_CS1_SET() outr(SPPI0_CS1_SOD_REG, _BV(SPPI0_CS1_BIT))
00400
00401 #endif
00402
00403 #ifdef SPPI0_CS2_BIT
00404
00405 #if !defined(SPPI0_CS2_PIO_ID)
00406 #define SPPI0_CS2_PE_REG PIO_PER
00407 #define SPPI0_CS2_OE_REG PIO_OER
00408 #define SPPI0_CS2_COD_REG PIO_CODR
00409 #define SPPI0_CS2_SOD_REG PIO_SODR
00410 #elif SPPI0_CS2_PIO_ID == PIO_ID
00411 #define SPPI0_CS2_PE_REG PIO_PER
00412 #define SPPI0_CS2_OE_REG PIO_OER
00413 #define SPPI0_CS2_COD_REG PIO_CODR
00414 #define SPPI0_CS2_SOD_REG PIO_SODR
00415 #elif SPPI0_CS2_PIO_ID == PIOA_ID
00416 #define SPPI0_CS2_PE_REG PIOA_PER
00417 #define SPPI0_CS2_OE_REG PIOA_OER
00418 #define SPPI0_CS2_COD_REG PIOA_CODR
00419 #define SPPI0_CS2_SOD_REG PIOA_SODR
00420 #elif SPPI0_CS2_PIO_ID == PIOB_ID
00421 #define SPPI0_CS2_PE_REG PIOB_PER
00422 #define SPPI0_CS2_OE_REG PIOB_OER
00423 #define SPPI0_CS2_COD_REG PIOB_CODR
00424 #define SPPI0_CS2_SOD_REG PIOB_SODR
00425 #elif SPPI0_CS2_PIO_ID == PIOC_ID
00426 #define SPPI0_CS2_PE_REG PIOC_PER
00427 #define SPPI0_CS2_OE_REG PIOC_OER
00428 #define SPPI0_CS2_COD_REG PIOC_CODR
00429 #define SPPI0_CS2_SOD_REG PIOC_SODR
00430 #endif
00431
00433 #define SPPI0_CS2_ENA() \
00434 outr(SPPI0_CS2_PE_REG, _BV(SPPI0_CS2_BIT)); \
00435 outr(SPPI0_CS2_OE_REG, _BV(SPPI0_CS2_BIT))
00436
00437 #define SPPI0_CS2_CLR() outr(SPPI0_CS2_COD_REG, _BV(SPPI0_CS2_BIT))
00438
00439 #define SPPI0_CS2_SET() outr(SPPI0_CS2_SOD_REG, _BV(SPPI0_CS2_BIT))
00440
00441 #endif
00442
00443 #ifdef SPPI0_CS3_BIT
00444
00445 #if !defined(SPPI0_CS3_PIO_ID)
00446 #define SPPI0_CS3_PE_REG PIO_PER
00447 #define SPPI0_CS3_OE_REG PIO_OER
00448 #define SPPI0_CS3_COD_REG PIO_CODR
00449 #define SPPI0_CS3_SOD_REG PIO_SODR
00450 #elif SPPI0_CS3_PIO_ID == PIO_ID
00451 #define SPPI0_CS3_PE_REG PIO_PER
00452 #define SPPI0_CS3_OE_REG PIO_OER
00453 #define SPPI0_CS3_COD_REG PIO_CODR
00454 #define SPPI0_CS3_SOD_REG PIO_SODR
00455 #elif SPPI0_CS3_PIO_ID == PIOA_ID
00456 #define SPPI0_CS3_PE_REG PIOA_PER
00457 #define SPPI0_CS3_OE_REG PIOA_OER
00458 #define SPPI0_CS3_COD_REG PIOA_CODR
00459 #define SPPI0_CS3_SOD_REG PIOA_SODR
00460 #elif SPPI0_CS3_PIO_ID == PIOB_ID
00461 #define SPPI0_CS3_PE_REG PIOB_PER
00462 #define SPPI0_CS3_OE_REG PIOB_OER
00463 #define SPPI0_CS3_COD_REG PIOB_CODR
00464 #define SPPI0_CS3_SOD_REG PIOB_SODR
00465 #elif SPPI0_CS3_PIO_ID == PIOC_ID
00466 #define SPPI0_CS3_PE_REG PIOC_PER
00467 #define SPPI0_CS3_OE_REG PIOC_OER
00468 #define SPPI0_CS3_COD_REG PIOC_CODR
00469 #define SPPI0_CS3_SOD_REG PIOC_SODR
00470 #endif
00471
00473 #define SPPI0_CS3_ENA() \
00474 outr(SPPI0_CS3_PE_REG, _BV(SPPI0_CS3_BIT)); \
00475 outr(SPPI0_CS3_OE_REG, _BV(SPPI0_CS3_BIT))
00476
00477 #define SPPI0_CS3_CLR() outr(SPPI0_CS3_COD_REG, _BV(SPPI0_CS3_BIT))
00478
00479 #define SPPI0_CS3_SET() outr(SPPI0_CS3_SOD_REG, _BV(SPPI0_CS3_BIT))
00480
00481 #endif
00482
00483 #ifdef SPPI0_RST0_BIT
00484
00485 #if !defined(SPPI0_RST0_PIO_ID)
00486 #define SPPI0_RST0_PE_REG PIO_PER
00487 #define SPPI0_RST0_OE_REG PIO_OER
00488 #define SPPI0_RST0_COD_REG PIO_CODR
00489 #define SPPI0_RST0_SOD_REG PIO_SODR
00490 #elif SPPI0_RST0_PIO_ID == PIO_ID
00491 #define SPPI0_RST0_PE_REG PIO_PER
00492 #define SPPI0_RST0_OE_REG PIO_OER
00493 #define SPPI0_RST0_COD_REG PIO_CODR
00494 #define SPPI0_RST0_SOD_REG PIO_SODR
00495 #elif SPPI0_RST0_PIO_ID == PIOA_ID
00496 #define SPPI0_RST0_PE_REG PIOA_PER
00497 #define SPPI0_RST0_OE_REG PIOA_OER
00498 #define SPPI0_RST0_COD_REG PIOA_CODR
00499 #define SPPI0_RST0_SOD_REG PIOA_SODR
00500 #elif SPPI0_RST0_PIO_ID == PIOB_ID
00501 #define SPPI0_RST0_PE_REG PIOB_PER
00502 #define SPPI0_RST0_OE_REG PIOB_OER
00503 #define SPPI0_RST0_COD_REG PIOB_CODR
00504 #define SPPI0_RST0_SOD_REG PIOB_SODR
00505 #elif SPPI0_RST0_PIO_ID == PIOC_ID
00506 #define SPPI0_RST0_PE_REG PIOC_PER
00507 #define SPPI0_RST0_OE_REG PIOC_OER
00508 #define SPPI0_RST0_COD_REG PIOC_CODR
00509 #define SPPI0_RST0_SOD_REG PIOC_SODR
00510 #endif
00511
00513 #define SPPI0_RST0_ENA() \
00514 outr(SPPI0_RST0_PE_REG, _BV(SPPI0_RST0_BIT)); \
00515 outr(SPPI0_RST0_OE_REG, _BV(SPPI0_RST0_BIT))
00516
00517 #define SPPI0_RST0_CLR() outr(SPPI0_RST0_COD_REG, _BV(SPPI0_RST0_BIT))
00518
00519 #define SPPI0_RST0_SET() outr(SPPI0_RST0_SOD_REG, _BV(SPPI0_RST0_BIT))
00520
00521 #endif
00522
00523 #ifdef SPPI0_RST1_BIT
00524
00525 #if !defined(SPPI0_RST1_PIO_ID)
00526 #define SPPI0_RST1_PE_REG PIO_PER
00527 #define SPPI0_RST1_OE_REG PIO_OER
00528 #define SPPI0_RST1_COD_REG PIO_CODR
00529 #define SPPI0_RST1_SOD_REG PIO_SODR
00530 #elif SPPI0_RST1_PIO_ID == PIO_ID
00531 #define SPPI0_RST1_PE_REG PIO_PER
00532 #define SPPI0_RST1_OE_REG PIO_OER
00533 #define SPPI0_RST1_COD_REG PIO_CODR
00534 #define SPPI0_RST1_SOD_REG PIO_SODR
00535 #elif SPPI0_RST1_PIO_ID == PIOA_ID
00536 #define SPPI0_RST1_PE_REG PIOA_PER
00537 #define SPPI0_RST1_OE_REG PIOA_OER
00538 #define SPPI0_RST1_COD_REG PIOA_CODR
00539 #define SPPI0_RST1_SOD_REG PIOA_SODR
00540 #elif SPPI0_RST1_PIO_ID == PIOB_ID
00541 #define SPPI0_RST1_PE_REG PIOB_PER
00542 #define SPPI0_RST1_OE_REG PIOB_OER
00543 #define SPPI0_RST1_COD_REG PIOB_CODR
00544 #define SPPI0_RST1_SOD_REG PIOB_SODR
00545 #elif SPPI0_RST1_PIO_ID == PIOC_ID
00546 #define SPPI0_RST1_PE_REG PIOC_PER
00547 #define SPPI0_RST1_OE_REG PIOC_OER
00548 #define SPPI0_RST1_COD_REG PIOC_CODR
00549 #define SPPI0_RST1_SOD_REG PIOC_SODR
00550 #endif
00551
00553 #define SPPI0_RST1_ENA() \
00554 outr(SPPI0_RST1_PE_REG, _BV(SPPI0_RST1_BIT)); \
00555 outr(SPPI0_RST1_OE_REG, _BV(SPPI0_RST1_BIT))
00556
00557 #define SPPI0_RST1_CLR() outr(SPPI0_RST1_COD_REG, _BV(SPPI0_RST1_BIT))
00558
00559 #define SPPI0_RST1_SET() outr(SPPI0_RST1_SOD_REG, _BV(SPPI0_RST1_BIT))
00560
00561 #endif
00562
00563 #ifdef SPPI0_RST2_BIT
00564
00565 #if !defined(SPPI0_RST2_PIO_ID)
00566 #define SPPI0_RST2_PE_REG PIO_PER
00567 #define SPPI0_RST2_OE_REG PIO_OER
00568 #define SPPI0_RST2_COD_REG PIO_CODR
00569 #define SPPI0_RST2_SOD_REG PIO_SODR
00570 #elif SPPI0_RST2_PIO_ID == PIO_ID
00571 #define SPPI0_RST2_PE_REG PIO_PER
00572 #define SPPI0_RST2_OE_REG PIO_OER
00573 #define SPPI0_RST2_COD_REG PIO_CODR
00574 #define SPPI0_RST2_SOD_REG PIO_SODR
00575 #elif SPPI0_RST2_PIO_ID == PIOA_ID
00576 #define SPPI0_RST2_PE_REG PIOA_PER
00577 #define SPPI0_RST2_OE_REG PIOA_OER
00578 #define SPPI0_RST2_COD_REG PIOA_CODR
00579 #define SPPI0_RST2_SOD_REG PIOA_SODR
00580 #elif SPPI0_RST2_PIO_ID == PIOB_ID
00581 #define SPPI0_RST2_PE_REG PIOB_PER
00582 #define SPPI0_RST2_OE_REG PIOB_OER
00583 #define SPPI0_RST2_COD_REG PIOB_CODR
00584 #define SPPI0_RST2_SOD_REG PIOB_SODR
00585 #elif SPPI0_RST2_PIO_ID == PIOC_ID
00586 #define SPPI0_RST2_PE_REG PIOC_PER
00587 #define SPPI0_RST2_OE_REG PIOC_OER
00588 #define SPPI0_RST2_COD_REG PIOC_CODR
00589 #define SPPI0_RST2_SOD_REG PIOC_SODR
00590 #endif
00591
00593 #define SPPI0_RST2_ENA() \
00594 outr(SPPI0_RST2_PE_REG, _BV(SPPI0_RST2_BIT)); \
00595 outr(SPPI0_RST2_OE_REG, _BV(SPPI0_RST2_BIT))
00596
00597 #define SPPI0_RST2_CLR() outr(SPPI0_RST2_COD_REG, _BV(SPPI0_RST2_BIT))
00598
00599 #define SPPI0_RST2_SET() outr(SPPI0_RST2_SOD_REG, _BV(SPPI0_RST2_BIT))
00600
00601 #endif
00602
00603 #ifdef SPPI0_RST3_BIT
00604
00605 #if !defined(SPPI0_RST3_PIO_ID)
00606 #define SPPI0_RST3_PE_REG PIO_PER
00607 #define SPPI0_RST3_OE_REG PIO_OER
00608 #define SPPI0_RST3_COD_REG PIO_CODR
00609 #define SPPI0_RST3_SOD_REG PIO_SODR
00610 #elif SPPI0_RST3_PIO_ID == PIO_ID
00611 #define SPPI0_RST3_PE_REG PIO_PER
00612 #define SPPI0_RST3_OE_REG PIO_OER
00613 #define SPPI0_RST3_COD_REG PIO_CODR
00614 #define SPPI0_RST3_SOD_REG PIO_SODR
00615 #elif SPPI0_RST3_PIO_ID == PIOA_ID
00616 #define SPPI0_RST3_PE_REG PIOA_PER
00617 #define SPPI0_RST3_OE_REG PIOA_OER
00618 #define SPPI0_RST3_COD_REG PIOA_CODR
00619 #define SPPI0_RST3_SOD_REG PIOA_SODR
00620 #elif SPPI0_RST3_PIO_ID == PIOB_ID
00621 #define SPPI0_RST3_PE_REG PIOB_PER
00622 #define SPPI0_RST3_OE_REG PIOB_OER
00623 #define SPPI0_RST3_COD_REG PIOB_CODR
00624 #define SPPI0_RST3_SOD_REG PIOB_SODR
00625 #elif SPPI0_RST3_PIO_ID == PIOC_ID
00626 #define SPPI0_RST3_PE_REG PIOC_PER
00627 #define SPPI0_RST3_OE_REG PIOC_OER
00628 #define SPPI0_RST3_COD_REG PIOC_CODR
00629 #define SPPI0_RST3_SOD_REG PIOC_SODR
00630 #endif
00631
00633 #define SPPI0_RST3_ENA() \
00634 outr(SPPI0_RST3_PE_REG, _BV(SPPI0_RST3_BIT)); \
00635 outr(SPPI0_RST3_OE_REG, _BV(SPPI0_RST3_BIT))
00636
00637 #define SPPI0_RST3_CLR() outr(SPPI0_RST3_COD_REG, _BV(SPPI0_RST3_BIT))
00638
00639 #define SPPI0_RST3_SET() outr(SPPI0_RST3_SOD_REG, _BV(SPPI0_RST3_BIT))
00640
00641 #endif
00642
00643 #endif
00644
00645 extern int Sppi0SetMode(ureg_t ix, ureg_t mode);
00646 extern void Sppi0SetSpeed(ureg_t ix, uint32_t rate);
00647 extern void Sppi0Enable(ureg_t ix);
00648 extern void Sppi0ChipReset(ureg_t ix, uint8_t hi);
00649 extern void Sppi0ChipSelect(ureg_t ix, uint8_t hi);
00650 extern void Sppi0SelectDevice(ureg_t ix);
00651 extern void Sppi0DeselectDevice(ureg_t ix);
00652 extern void Sppi0NegSelectDevice(ureg_t ix);
00653 extern void Sppi0NegDeselectDevice(ureg_t ix);
00654 extern uint8_t Sppi0Byte(uint8_t data);
00655 extern void Sppi0Transact(const void *wdata, void *rdata, size_t len);
00656
00657 #endif