Alek Du | 7eac544 | 2008-06-05 17:38:56 +0800 | [diff] [blame] | 1 | /* define spi-uart debug constrains */ |
| 2 | /* code for MRST early printk */ |
| 3 | #ifndef _SPI_UART |
| 4 | #define _SPI_UART |
| 5 | |
| 6 | #include "types.h" |
| 7 | |
Alek Du | 7eac544 | 2008-06-05 17:38:56 +0800 | [diff] [blame] | 8 | #define MRST_REGBASE_SPI0 0xff128000 |
| 9 | #define MRST_REGBASE_SPI1 0xff128400 |
| 10 | #define MRST_REGBASE_SPI2 0xff128800 |
| 11 | |
Leonard Mai | 4c56e45 | 2011-10-06 12:27:46 -0700 | [diff] [blame] | 12 | #define CTP_REGBASE_SPI0 0xff128000 |
| 13 | #define CTP_REGBASE_SPI1 0xff135000 |
| 14 | #define CTP_REGBASE_SPI2 0xff136000 |
| 15 | |
Jacob Pan | 438855b | 2009-08-20 12:37:15 -0700 | [diff] [blame] | 16 | /* HW info for MRST CLk Control Unit, one 32b reg */ |
| 17 | #define MRST_SPI_CLK_BASE 100000000 /* 100m */ |
| 18 | #define MRST_CLK_SPI0_REG 0xff11d86c |
| 19 | #define CLK_SPI_BDIV_OFFSET 0 |
| 20 | #define CLK_SPI_BDIV_MASK 0x00000007 |
| 21 | #define CLK_SPI_CDIV_OFFSET 9 |
| 22 | #define CLK_SPI_CDIV_MASK 0x00000e00 |
| 23 | #define CLK_SPI_CDIV_100M 0x0 |
| 24 | #define CLK_SPI_CDIV_50M 0x1 |
| 25 | #define CLK_SPI_CDIV_33M 0x2 |
| 26 | #define CLK_SPI_CDIV_25M 0x3 |
| 27 | #define CLK_SPI_DISABLE_OFFSET 8 |
| 28 | |
Alek Du | 7eac544 | 2008-06-05 17:38:56 +0800 | [diff] [blame] | 29 | struct mrst_spi_reg { |
| 30 | vu32 ctrlr0; /* control reg 0 */ |
| 31 | vu32 ctrlr1; /* control reg 1 */ |
| 32 | vu32 ssienr; /* SSI enable reg */ |
| 33 | vu32 mwcr; /* Microwire control reg */ |
| 34 | |
| 35 | vu32 ser; /* slave enable reg */ |
| 36 | vu32 baudr; |
| 37 | vu32 txftlr; |
| 38 | vu32 rxftlr; |
| 39 | |
| 40 | vu32 txflr; |
| 41 | vu32 rxflr; |
| 42 | vu32 sr; |
| 43 | vu32 imr; |
| 44 | |
| 45 | vu32 isr; |
| 46 | vu32 risr; |
| 47 | vu32 txoicr; |
| 48 | vu32 rxoicr; |
| 49 | |
| 50 | vu32 rxuicr; |
| 51 | vu32 msticr; |
| 52 | vu32 icr; |
| 53 | vu32 dmacr; |
| 54 | |
| 55 | vu32 dmatdlr; |
| 56 | vu32 dmardlr; |
| 57 | vu32 idr; |
| 58 | vu32 ssi_comp_version; |
| 59 | |
| 60 | vu32 dr[16]; /* 16 bits access for each 32bit space */ |
| 61 | }; |
| 62 | |
| 63 | /* bit fields in CTRLR0 */ |
| 64 | #define SPI_DFS_OFFSET 0 |
| 65 | #define SPI_FRF_OFFSET 4 |
| 66 | #define FRF_SPI 0x0 |
| 67 | #define FRF_SSP 0x1 |
| 68 | #define FRF_MICROWIRE 0x2 |
| 69 | #define FRF_RESV 0x3 |
| 70 | #define SPI_SCPH_OFFSET 6 |
| 71 | #define SPI_SCOL_OFFSET 7 |
| 72 | #define SPI_TMOD_OFFSET 8 |
| 73 | #define TMOD_TR 0x0 /* xmit & recv */ |
| 74 | #define TMOD_TO 0x1 /* xmit only */ |
| 75 | #define TMOD_RO 0x2 /* recv only */ |
| 76 | #define TMOD_EPROMREAD 0x3 /* eeprom read mode */ |
| 77 | |
| 78 | #define SPI_SLVOE_OFFSET 10 |
| 79 | #define SPI_SRL_OFFSET 11 |
| 80 | #define SPI_CFS_OFFSET 12 |
| 81 | |
| 82 | /* bit fields in SR, 7 bits */ |
| 83 | #define SR_MASK 0x7f /* cover 7 bits */ |
| 84 | #define SR_BUSY (1 << 0) |
| 85 | #define SR_TF_NOT_FULL (1 << 1) |
| 86 | #define SR_TF_EMPT (1 << 2) |
| 87 | #define SR_RF_NOT_EMPT (1 << 3) |
| 88 | #define SR_RF_FULL (1 << 4) |
| 89 | #define SR_TX_ERR (1 << 5) |
| 90 | #define SR_DCOL (1 << 6) |
| 91 | |
| 92 | /* bit fields in ISR, IMR, RISR, 7 bits */ |
| 93 | #define SPI_INT_TXEI (1 << 0) |
| 94 | #define SPI_INT_TXOI (1 << 1) |
| 95 | #define SPI_INT_RXUI (1 << 2) |
| 96 | #define SPI_INT_RXOI (1 << 3) |
| 97 | #define SPI_INT_RXFI (1 << 4) |
| 98 | #define SPI_INT_MSTI (1 << 5) |
| 99 | |
| 100 | extern void bs_spi_printk(const char *str); |
| 101 | |
| 102 | #endif |