diff options
author | Geert Uytterhoeven <geert+renesas@linux-m68k.org> | 2014-01-12 05:27:37 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-01-13 07:10:01 -0500 |
commit | 6ab4865b7e34e707857107ca76c0b98d87a992dd (patch) | |
tree | adc9e67cb9e5a26a0404a23b606926dd6a94b5a7 | |
parent | e2e5ed79fed3a9be3846651ca5b463658f8ff6c9 (diff) |
spi: rspi: Add more RSPI register documentation
Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r-- | drivers/spi/spi-rspi.c | 185 |
1 files changed, 99 insertions, 86 deletions
diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c index 627126ae2571..1f69343689f9 100644 --- a/drivers/spi/spi-rspi.c +++ b/drivers/spi/spi-rspi.c | |||
@@ -37,27 +37,29 @@ | |||
37 | #include <linux/spi/spi.h> | 37 | #include <linux/spi/spi.h> |
38 | #include <linux/spi/rspi.h> | 38 | #include <linux/spi/rspi.h> |
39 | 39 | ||
40 | #define RSPI_SPCR 0x00 | 40 | #define RSPI_SPCR 0x00 /* Control Register */ |
41 | #define RSPI_SSLP 0x01 | 41 | #define RSPI_SSLP 0x01 /* Slave Select Polarity Register */ |
42 | #define RSPI_SPPCR 0x02 | 42 | #define RSPI_SPPCR 0x02 /* Pin Control Register */ |
43 | #define RSPI_SPSR 0x03 | 43 | #define RSPI_SPSR 0x03 /* Status Register */ |
44 | #define RSPI_SPDR 0x04 | 44 | #define RSPI_SPDR 0x04 /* Data Register */ |
45 | #define RSPI_SPSCR 0x08 | 45 | #define RSPI_SPSCR 0x08 /* Sequence Control Register */ |
46 | #define RSPI_SPSSR 0x09 | 46 | #define RSPI_SPSSR 0x09 /* Sequence Status Register */ |
47 | #define RSPI_SPBR 0x0a | 47 | #define RSPI_SPBR 0x0a /* Bit Rate Register */ |
48 | #define RSPI_SPDCR 0x0b | 48 | #define RSPI_SPDCR 0x0b /* Data Control Register */ |
49 | #define RSPI_SPCKD 0x0c | 49 | #define RSPI_SPCKD 0x0c /* Clock Delay Register */ |
50 | #define RSPI_SSLND 0x0d | 50 | #define RSPI_SSLND 0x0d /* Slave Select Negation Delay Register */ |
51 | #define RSPI_SPND 0x0e | 51 | #define RSPI_SPND 0x0e /* Next-Access Delay Register */ |
52 | #define RSPI_SPCR2 0x0f | 52 | #define RSPI_SPCR2 0x0f /* Control Register 2 */ |
53 | #define RSPI_SPCMD0 0x10 | 53 | #define RSPI_SPCMD0 0x10 /* Command Register 0 */ |
54 | #define RSPI_SPCMD1 0x12 | 54 | #define RSPI_SPCMD1 0x12 /* Command Register 1 */ |
55 | #define RSPI_SPCMD2 0x14 | 55 | #define RSPI_SPCMD2 0x14 /* Command Register 2 */ |
56 | #define RSPI_SPCMD3 0x16 | 56 | #define RSPI_SPCMD3 0x16 /* Command Register 3 */ |
57 | #define RSPI_SPCMD4 0x18 | 57 | #define RSPI_SPCMD4 0x18 /* Command Register 4 */ |
58 | #define RSPI_SPCMD5 0x1a | 58 | #define RSPI_SPCMD5 0x1a /* Command Register 5 */ |
59 | #define RSPI_SPCMD6 0x1c | 59 | #define RSPI_SPCMD6 0x1c /* Command Register 6 */ |
60 | #define RSPI_SPCMD7 0x1e | 60 | #define RSPI_SPCMD7 0x1e /* Command Register 7 */ |
61 | #define RSPI_SPBFCR 0x20 /* Buffer Control Register */ | ||
62 | #define RSPI_SPBFDR 0x22 /* Buffer Data Count Setting Register */ | ||
61 | 63 | ||
62 | /*qspi only */ | 64 | /*qspi only */ |
63 | #define QSPI_SPBFCR 0x18 | 65 | #define QSPI_SPBFCR 0x18 |
@@ -67,87 +69,98 @@ | |||
67 | #define QSPI_SPBMUL2 0x24 | 69 | #define QSPI_SPBMUL2 0x24 |
68 | #define QSPI_SPBMUL3 0x28 | 70 | #define QSPI_SPBMUL3 0x28 |
69 | 71 | ||
70 | /* SPCR */ | 72 | /* SPCR - Control Register */ |
71 | #define SPCR_SPRIE 0x80 | 73 | #define SPCR_SPRIE 0x80 /* Receive Interrupt Enable */ |
72 | #define SPCR_SPE 0x40 | 74 | #define SPCR_SPE 0x40 /* Function Enable */ |
73 | #define SPCR_SPTIE 0x20 | 75 | #define SPCR_SPTIE 0x20 /* Transmit Interrupt Enable */ |
74 | #define SPCR_SPEIE 0x10 | 76 | #define SPCR_SPEIE 0x10 /* Error Interrupt Enable */ |
75 | #define SPCR_MSTR 0x08 | 77 | #define SPCR_MSTR 0x08 /* Master/Slave Mode Select */ |
76 | #define SPCR_MODFEN 0x04 | 78 | #define SPCR_MODFEN 0x04 /* Mode Fault Error Detection Enable */ |
77 | #define SPCR_TXMD 0x02 | 79 | /* RSPI on SH only */ |
78 | #define SPCR_SPMS 0x01 | 80 | #define SPCR_TXMD 0x02 /* TX Only Mode (vs. Full Duplex) */ |
79 | 81 | #define SPCR_SPMS 0x01 /* 3-wire Mode (vs. 4-wire) */ | |
80 | /* SSLP */ | 82 | |
81 | #define SSLP_SSL1P 0x02 | 83 | /* SSLP - Slave Select Polarity Register */ |
82 | #define SSLP_SSL0P 0x01 | 84 | #define SSLP_SSL1P 0x02 /* SSL1 Signal Polarity Setting */ |
83 | 85 | #define SSLP_SSL0P 0x01 /* SSL0 Signal Polarity Setting */ | |
84 | /* SPPCR */ | 86 | |
85 | #define SPPCR_MOIFE 0x20 | 87 | /* SPPCR - Pin Control Register */ |
86 | #define SPPCR_MOIFV 0x10 | 88 | #define SPPCR_MOIFE 0x20 /* MOSI Idle Value Fixing Enable */ |
89 | #define SPPCR_MOIFV 0x10 /* MOSI Idle Fixed Value */ | ||
87 | #define SPPCR_SPOM 0x04 | 90 | #define SPPCR_SPOM 0x04 |
88 | #define SPPCR_SPLP2 0x02 | 91 | #define SPPCR_SPLP2 0x02 /* Loopback Mode 2 (non-inverting) */ |
89 | #define SPPCR_SPLP 0x01 | 92 | #define SPPCR_SPLP 0x01 /* Loopback Mode (inverting) */ |
90 | 93 | ||
91 | /* SPSR */ | 94 | /* SPSR - Status Register */ |
92 | #define SPSR_SPRF 0x80 | 95 | #define SPSR_SPRF 0x80 /* Receive Buffer Full Flag */ |
93 | #define SPSR_SPTEF 0x20 | 96 | #define SPSR_TEND 0x40 /* Transmit End */ |
94 | #define SPSR_PERF 0x08 | 97 | #define SPSR_SPTEF 0x20 /* Transmit Buffer Empty Flag */ |
95 | #define SPSR_MODF 0x04 | 98 | #define SPSR_PERF 0x08 /* Parity Error Flag */ |
96 | #define SPSR_IDLNF 0x02 | 99 | #define SPSR_MODF 0x04 /* Mode Fault Error Flag */ |
97 | #define SPSR_OVRF 0x01 | 100 | #define SPSR_IDLNF 0x02 /* RSPI Idle Flag */ |
98 | 101 | #define SPSR_OVRF 0x01 /* Overrun Error Flag */ | |
99 | /* SPSCR */ | 102 | |
100 | #define SPSCR_SPSLN_MASK 0x07 | 103 | /* SPSCR - Sequence Control Register */ |
101 | 104 | #define SPSCR_SPSLN_MASK 0x07 /* Sequence Length Specification */ | |
102 | /* SPSSR */ | 105 | |
103 | #define SPSSR_SPECM_MASK 0x70 | 106 | /* SPSSR - Sequence Status Register */ |
104 | #define SPSSR_SPCP_MASK 0x07 | 107 | #define SPSSR_SPECM_MASK 0x70 /* Command Error Mask */ |
105 | 108 | #define SPSSR_SPCP_MASK 0x07 /* Command Pointer Mask */ | |
106 | /* SPDCR */ | 109 | |
107 | #define SPDCR_SPLW 0x20 | 110 | /* SPDCR - Data Control Register */ |
108 | #define SPDCR_SPRDTD 0x10 | 111 | #define SPDCR_TXDMY 0x80 /* Dummy Data Transmission Enable */ |
112 | #define SPDCR_SPLW1 0x40 /* Access Width Specification (RZ) */ | ||
113 | #define SPDCR_SPLW0 0x20 /* Access Width Specification (RZ) */ | ||
114 | #define SPDCR_SPLLWORD (SPDCR_SPLW1 | SPDCR_SPLW0) | ||
115 | #define SPDCR_SPLWORD SPDCR_SPLW1 | ||
116 | #define SPDCR_SPLBYTE SPDCR_SPLW0 | ||
117 | #define SPDCR_SPLW 0x20 /* Access Width Specification (SH) */ | ||
118 | #define SPDCR_SPRDTD 0x10 /* Receive Transmit Data Select */ | ||
109 | #define SPDCR_SLSEL1 0x08 | 119 | #define SPDCR_SLSEL1 0x08 |
110 | #define SPDCR_SLSEL0 0x04 | 120 | #define SPDCR_SLSEL0 0x04 |
111 | #define SPDCR_SLSEL_MASK 0x0c | 121 | #define SPDCR_SLSEL_MASK 0x0c /* SSL1 Output Select */ |
112 | #define SPDCR_SPFC1 0x02 | 122 | #define SPDCR_SPFC1 0x02 |
113 | #define SPDCR_SPFC0 0x01 | 123 | #define SPDCR_SPFC0 0x01 |
124 | #define SPDCR_SPFC_MASK 0x03 /* Frame Count Setting (1-4) */ | ||
114 | 125 | ||
115 | /* SPCKD */ | 126 | /* SPCKD - Clock Delay Register */ |
116 | #define SPCKD_SCKDL_MASK 0x07 | 127 | #define SPCKD_SCKDL_MASK 0x07 /* Clock Delay Setting (1-8) */ |
117 | 128 | ||
118 | /* SSLND */ | 129 | /* SSLND - Slave Select Negation Delay Register */ |
119 | #define SSLND_SLNDL_MASK 0x07 | 130 | #define SSLND_SLNDL_MASK 0x07 /* SSL Negation Delay Setting (1-8) */ |
120 | 131 | ||
121 | /* SPND */ | 132 | /* SPND - Next-Access Delay Register */ |
122 | #define SPND_SPNDL_MASK 0x07 | 133 | #define SPND_SPNDL_MASK 0x07 /* Next-Access Delay Setting (1-8) */ |
123 | 134 | ||
124 | /* SPCR2 */ | 135 | /* SPCR2 - Control Register 2 */ |
125 | #define SPCR2_PTE 0x08 | 136 | #define SPCR2_PTE 0x08 /* Parity Self-Test Enable */ |
126 | #define SPCR2_SPIE 0x04 | 137 | #define SPCR2_SPIE 0x04 /* Idle Interrupt Enable */ |
127 | #define SPCR2_SPOE 0x02 | 138 | #define SPCR2_SPOE 0x02 /* Odd Parity Enable (vs. Even) */ |
128 | #define SPCR2_SPPE 0x01 | 139 | #define SPCR2_SPPE 0x01 /* Parity Enable */ |
129 | 140 | ||
130 | /* SPCMDn */ | 141 | /* SPCMDn - Command Registers */ |
131 | #define SPCMD_SCKDEN 0x8000 | 142 | #define SPCMD_SCKDEN 0x8000 /* Clock Delay Setting Enable */ |
132 | #define SPCMD_SLNDEN 0x4000 | 143 | #define SPCMD_SLNDEN 0x4000 /* SSL Negation Delay Setting Enable */ |
133 | #define SPCMD_SPNDEN 0x2000 | 144 | #define SPCMD_SPNDEN 0x2000 /* Next-Access Delay Enable */ |
134 | #define SPCMD_LSBF 0x1000 | 145 | #define SPCMD_LSBF 0x1000 /* LSB First */ |
135 | #define SPCMD_SPB_MASK 0x0f00 | 146 | #define SPCMD_SPB_MASK 0x0f00 /* Data Length Setting */ |
136 | #define SPCMD_SPB_8_TO_16(bit) (((bit - 1) << 8) & SPCMD_SPB_MASK) | 147 | #define SPCMD_SPB_8_TO_16(bit) (((bit - 1) << 8) & SPCMD_SPB_MASK) |
137 | #define SPCMD_SPB_8BIT 0x0000 /* qspi only */ | 148 | #define SPCMD_SPB_8BIT 0x0000 /* qspi only */ |
138 | #define SPCMD_SPB_16BIT 0x0100 | 149 | #define SPCMD_SPB_16BIT 0x0100 |
139 | #define SPCMD_SPB_20BIT 0x0000 | 150 | #define SPCMD_SPB_20BIT 0x0000 |
140 | #define SPCMD_SPB_24BIT 0x0100 | 151 | #define SPCMD_SPB_24BIT 0x0100 |
141 | #define SPCMD_SPB_32BIT 0x0200 | 152 | #define SPCMD_SPB_32BIT 0x0200 |
142 | #define SPCMD_SSLKP 0x0080 | 153 | #define SPCMD_SSLKP 0x0080 /* SSL Signal Level Keeping */ |
143 | #define SPCMD_SSLA_MASK 0x0030 | 154 | #define SPCMD_SSLA_MASK 0x0030 /* SSL Assert Signal Setting (RSPI) */ |
144 | #define SPCMD_BRDV_MASK 0x000c | 155 | #define SPCMD_BRDV_MASK 0x000c /* Bit Rate Division Setting */ |
145 | #define SPCMD_CPOL 0x0002 | 156 | #define SPCMD_CPOL 0x0002 /* Clock Polarity Setting */ |
146 | #define SPCMD_CPHA 0x0001 | 157 | #define SPCMD_CPHA 0x0001 /* Clock Phase Setting */ |
147 | 158 | ||
148 | /* SPBFCR */ | 159 | /* SPBFCR - Buffer Control Register */ |
149 | #define SPBFCR_TXRST 0x80 /* qspi only */ | 160 | #define SPBFCR_TXRST 0x80 /* Transmit Buffer Data Reset (qspi only) */ |
150 | #define SPBFCR_RXRST 0x40 /* qspi only */ | 161 | #define SPBFCR_RXRST 0x40 /* Receive Buffer Data Reset (qspi only) */ |
162 | #define SPBFCR_TXTRG_MASK 0x30 /* Transmit Buffer Data Triggering Number */ | ||
163 | #define SPBFCR_RXTRG_MASK 0x07 /* Receive Buffer Data Triggering Number */ | ||
151 | 164 | ||
152 | #define DUMMY_DATA 0x00 | 165 | #define DUMMY_DATA 0x00 |
153 | 166 | ||