]> rtime.felk.cvut.cz Git - lincan.git/blob - embedded/arch/arm/mach-lpc21xx/defines/lpcSPI.h
Merge branch 'master' into can-usb1
[lincan.git] / embedded / arch / arm / mach-lpc21xx / defines / lpcSPI.h
1 /******************************************************************************
2  *
3  * $RCSfile: lpcSPI.h,v $
4  * $Revision: 1.2 $
5  *
6  * Header file for Philips LPC ARM Processors.
7  * Copyright 2004 R O SoftWare
8  *
9  * No guarantees, warrantees, or promises, implied or otherwise.
10  * May be used for hobby or commercial purposes provided copyright
11  * notice remains intact.
12  *
13  *****************************************************************************/
14 #ifndef INC_LPC_SPI_H
15 #define INC_LPC_SPI_H
16
17 // Serial Peripheral Interface Registers (SPI)
18 typedef struct
19 {
20   REG_8 cr;                             // Control Register
21   REG_8 _pad0[3];
22   REG_8 sr;                             // Status Register
23   REG_8 _pad1[3];
24   REG_8 dr;                             // Data Register
25   REG_8 _pad2[3];
26   REG_8 ccr;                            // Clock Counter Register
27   REG_8 _pad3[3];
28   REG_8 tcr;                            // Test Control Register
29   REG_8 _pad4[3];
30   REG_8 tsr;                            // Test Status Register
31   REG_8 _pad5[3];
32   REG_8 tor;                            // Test Observe Register
33   REG_8 _pad6[3];
34   REG_8 flag;                           // Interrupt Flag Register
35   REG_8 _pad7[3];
36 } spiRegs_t;
37
38
39 // SPI Control Register
40 #define SPCR_BE    (1 << 2)            // BitEnable : If set the SPI controller
41                                        // sends and receives the number of bits
42                                        // selected by bits 11:8.
43 #define SPCR_CPHA  (1 << 3)            // Clock phase control
44 #define SPCR_CPOL  (1 << 4)            // Clock polarity control.
45 #define SPCR_MSTR  (1 << 5)            // Master mode select.
46 #define SPCR_LSBF  (1 << 6)            // LSB First controls
47 #define SPCR_SPIE  (1 << 7)            // Serial peripheral interrupt enable.
48 #define SPCR_BITS  (0xF << 8)          // When bit 2 of this register is 1,
49                                        // this field controls the number of 
50                                        // bits per transfer
51                                        // 1000 :  8 bits per transfer
52                                        // 1001 :  9 bits per transfer
53                                        // 1010 : 10 bits per transfer
54                                        // 1011 : 11 bits per transfer
55                                        // 1100 : 12 bits per transfer
56                                        // 1101 : 13 bits per transfer
57                                        // 1110 : 14 bits per transfer
58                                        // 1111 : 15 bits per transfer
59                                        // 0000 : 16 bits per transfer
60
61 //SPI Status Register
62 #define SPSR_ABRT  (1 << 3)           // Slave abort.
63 #define SPSR_MODF  (1 << 4)           // Mode fault.
64 #define SPSR_ROVR  (1 << 5)           // Read overrun.
65 #define SPSR_WCOL  (1 << 6)           // Write collision.
66 #define SPSR_SPIF  (1 << 7)           // SPI transfer complete flag.
67
68 //SPI Interrupt register
69 #define SPINT_IF   (1 << 0)           // SPI interrupt flag.
70
71
72 #endif