ausmbus_pscreg.h revision 1.1 1 1.1 shige /* $NetBSD: ausmbus_pscreg.h,v 1.1 2006/03/06 23:06:17 shige Exp $ */
2 1.1 shige
3 1.1 shige /*-
4 1.1 shige * Copyright (c) 2006 Shigeyuki Fukushima.
5 1.1 shige * All rights reserved.
6 1.1 shige *
7 1.1 shige * Written by Shigeyuki Fukushima.
8 1.1 shige *
9 1.1 shige * Redistribution and use in source and binary forms, with or without
10 1.1 shige * modification, are permitted provided that the following conditions
11 1.1 shige * are met:
12 1.1 shige * 1. Redistributions of source code must retain the above copyright
13 1.1 shige * notice, this list of conditions and the following disclaimer.
14 1.1 shige * 2. Redistributions in binary form must reproduce the above
15 1.1 shige * copyright notice, this list of conditions and the following
16 1.1 shige * disclaimer in the documentation and/or other materials provided
17 1.1 shige * with the distribution.
18 1.1 shige * 3. The name of the author may not be used to endorse or promote
19 1.1 shige * products derived from this software without specific prior
20 1.1 shige * written permission.
21 1.1 shige *
22 1.1 shige * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
23 1.1 shige * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
24 1.1 shige * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 1.1 shige * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
26 1.1 shige * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 1.1 shige * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
28 1.1 shige * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 1.1 shige * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30 1.1 shige * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
31 1.1 shige * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32 1.1 shige * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 1.1 shige */
34 1.1 shige
35 1.1 shige #ifndef _MIPS_ALCHEMY_AUSMBUS_PSCREG_H_
36 1.1 shige #define _MIPS_ALCHEMY_AUSMBUS_PSCREG_H_
37 1.1 shige
38 1.1 shige /*
39 1.1 shige * psc_smbcfg: SMBus Configuration Register
40 1.1 shige * RT: Rx FIFO Threshold
41 1.1 shige * TT: Tx FIFO Threshold
42 1.1 shige * DD: Disable DMA Transfers
43 1.1 shige * DE: Device Enable
44 1.1 shige * DIV: PSC Clock Divider (see psc_smbtmr)
45 1.1 shige * GCE: General Call Enable
46 1.1 shige * SFM: Standard/Fast Mode
47 1.1 shige * SLV: Slave Address
48 1.1 shige */
49 1.1 shige #define SMBUS_CFG_RT (3u << 30) /* R/W */
50 1.1 shige #define SMBUS_CFG_RT_SET(x) ((x & 0x3) << 30)
51 1.1 shige #define SMBUS_CFG_RT_FIFO1 0
52 1.1 shige #define SMBUS_CFG_RT_FIFO2 1
53 1.1 shige #define SMBUS_CFG_RT_FIFO4 2
54 1.1 shige #define SMBUS_CFG_RT_FIFO8 3
55 1.1 shige #define SMBUS_CFG_TT (3u << 28) /* R/W */
56 1.1 shige #define SMBUS_CFG_TT_SET(x) ((x & 0x3) << 28)
57 1.1 shige #define SMBUS_CFG_TT_FIFO1 0
58 1.1 shige #define SMBUS_CFG_TT_FIFO2 1
59 1.1 shige #define SMBUS_CFG_TT_FIFO4 2
60 1.1 shige #define SMBUS_CFG_TT_FIFO8 3
61 1.1 shige #define SMBUS_CFG_DD (1u << 27) /* R/W */
62 1.1 shige #define SMBUS_CFG_DE (1u << 26) /* R/W */
63 1.1 shige #define SMBUS_CFG_DIV (3u << 13) /* R/W */
64 1.1 shige #define SMBUS_CFG_DIV_SET(x) ((x & 0x3) << 13)
65 1.1 shige #define SMBUS_CFG_DIV2 0 /* PSC_CLK = pscn_mainclk / 2 */
66 1.1 shige #define SMBUS_CFG_DIV4 1 /* PSC_CLK = pscn_mainclk / 4 */
67 1.1 shige #define SMBUS_CFG_DIV8 2 /* PSC_CLK = pscn_mainclk / 8 */
68 1.1 shige #define SMBUS_CFG_DIV16 3 /* PSC_CLK = pscn_mainclk / 16 */
69 1.1 shige #define SMBUS_CFG_GCE (1u << 3) /* R/W */
70 1.1 shige #define SMBUS_CFG_SFM (1u << 8) /* R/W */
71 1.1 shige #define SMBUS_CFG_SLV (127u << 1) /* R/W */
72 1.1 shige
73 1.1 shige /*
74 1.1 shige * psc_smbmsk: SMBus Mask Register
75 1.1 shige * DN: Data Not-acknowledged
76 1.1 shige * AN: Address Not-acknowledged
77 1.1 shige * AL: Arbitration Lost
78 1.1 shige * RR: Mask Rx FIFO request intterrupt
79 1.1 shige * RO: Mask Rx FIFO overflow intterrupt
80 1.1 shige * RU: Mask Rx FIFO uderflow intterrupt
81 1.1 shige * TR: Mask Tx FIFO request intterrupt
82 1.1 shige * TO: Mask Tx FIFO overflow intterrupt
83 1.1 shige * TU: Mask Tx FIFO uderflow intterrupt
84 1.1 shige * SD: Mask Slave Done intterrupt
85 1.1 shige * MD: Mask Master Done intterrupt
86 1.1 shige */
87 1.1 shige #define SMBUS_MSK_DN (1u << 30) /* R/W */
88 1.1 shige #define SMBUS_MSK_AN (1u << 29) /* R/W */
89 1.1 shige #define SMBUS_MSK_AL (1u << 28) /* R/W */
90 1.1 shige #define SMBUS_MSK_RR (1u << 13) /* R/W */
91 1.1 shige #define SMBUS_MSK_RO (1u << 12) /* R/W */
92 1.1 shige #define SMBUS_MSK_RU (1u << 11) /* R/W */
93 1.1 shige #define SMBUS_MSK_TR (1u << 10) /* R/W */
94 1.1 shige #define SMBUS_MSK_TO (1u << 9) /* R/W */
95 1.1 shige #define SMBUS_MSK_TU (1u << 8) /* R/W */
96 1.1 shige #define SMBUS_MSK_SD (1u << 5) /* R/W */
97 1.1 shige #define SMBUS_MSK_MD (1u << 4) /* R/W */
98 1.1 shige #define SMBUS_MSK_ALLMASK (SMBUS_MSK_DN | SMBUS_MSK_AN | SMBUS_MSK_AL \
99 1.1 shige | SMBUS_MSK_RR | SMBUS_MSK_RO | SMBUS_MSK_RU \
100 1.1 shige | SMBUS_MSK_TR | SMBUS_MSK_TO | SMBUS_MSK_TU \
101 1.1 shige | SMBUS_MSK_SD | SMBUS_MSK_MD)
102 1.1 shige
103 1.1 shige /*
104 1.1 shige * psc_smbpcr: SMBus Protocol Control Register
105 1.1 shige * DC: Data Clear
106 1.1 shige * MS: Master Start
107 1.1 shige */
108 1.1 shige #define SMBUS_PCR_DC (1u << 2) /* R/W */
109 1.1 shige #define SMBUS_PCR_MS (1u << 0) /* R/W */
110 1.1 shige
111 1.1 shige /*
112 1.1 shige * psc_smbstat: SMBus Status Register
113 1.1 shige * BB: SMBus bus busy
114 1.1 shige * RF: Receive FIFO full
115 1.1 shige * RE: Receive FIFO empty
116 1.1 shige * RR: Receive request
117 1.1 shige * TF: Transfer FIFO full
118 1.1 shige * TE: Transfer FIFO empty
119 1.1 shige * TR: Transfer request
120 1.1 shige * SB: Slave busy
121 1.1 shige * MB: Master busy
122 1.1 shige * DI: Device interrupt
123 1.1 shige * DR: Device ready
124 1.1 shige * SR: PSC ready
125 1.1 shige */
126 1.1 shige #define SMBUS_STAT_BB (1u << 28) /* Read only */
127 1.1 shige #define SMBUS_STAT_RF (1u << 13) /* Read only */
128 1.1 shige #define SMBUS_STAT_RE (1u << 12) /* Read only */
129 1.1 shige #define SMBUS_STAT_RR (1u << 11) /* Read only */
130 1.1 shige #define SMBUS_STAT_TF (1u << 10) /* Read only */
131 1.1 shige #define SMBUS_STAT_TE (1u << 9) /* Read only */
132 1.1 shige #define SMBUS_STAT_TR (1u << 8) /* Read only */
133 1.1 shige #define SMBUS_STAT_SB (1u << 5) /* Read only */
134 1.1 shige #define SMBUS_STAT_MB (1u << 4) /* Read only */
135 1.1 shige #define SMBUS_STAT_DI (1u << 2) /* Read only */
136 1.1 shige #define SMBUS_STAT_DR (1u << 1) /* Read only */
137 1.1 shige #define SMBUS_STAT_SR (1u << 0) /* Read only */
138 1.1 shige
139 1.1 shige /*
140 1.1 shige * psc_smbevnt: SMBus Event Register
141 1.1 shige * DN: Data Not-acknowledged
142 1.1 shige * AN: Address Not-acknowledged
143 1.1 shige * AL: Arbitration Lost
144 1.1 shige * RR: Mask Rx FIFO request intterrupt
145 1.1 shige * RO: Mask Rx FIFO overflow intterrupt
146 1.1 shige * RU: Mask Rx FIFO uderflow intterrupt
147 1.1 shige * TR: Mask Tx FIFO request intterrupt
148 1.1 shige * TO: Mask Tx FIFO overflow intterrupt
149 1.1 shige * TU: Mask Tx FIFO uderflow intterrupt
150 1.1 shige * SD: Mask Slave Done intterrupt
151 1.1 shige * MD: Mask Master Done intterrupt
152 1.1 shige */
153 1.1 shige #define SMBUS_EVNT_DN (1u << 30) /* R/W */
154 1.1 shige #define SMBUS_EVNT_AN (1u << 29) /* R/W */
155 1.1 shige #define SMBUS_EVNT_AL (1u << 28) /* R/W */
156 1.1 shige #define SMBUS_EVNT_RR (1u << 13) /* R/W */
157 1.1 shige #define SMBUS_EVNT_RO (1u << 12) /* R/W */
158 1.1 shige #define SMBUS_EVNT_RU (1u << 11) /* R/W */
159 1.1 shige #define SMBUS_EVNT_TR (1u << 10) /* R/W */
160 1.1 shige #define SMBUS_EVNT_TO (1u << 9) /* R/W */
161 1.1 shige #define SMBUS_EVNT_TU (1u << 8) /* R/W */
162 1.1 shige #define SMBUS_EVNT_SD (1u << 5) /* R/W */
163 1.1 shige #define SMBUS_EVNT_MD (1u << 4) /* R/W */
164 1.1 shige
165 1.1 shige /*
166 1.1 shige * psc_smbtxrx: SMBus Tx/Rx Data Register
167 1.1 shige * STP: Stop
168 1.1 shige * RSR: Restart
169 1.1 shige * ADDRDATA: Address/Data
170 1.1 shige */
171 1.1 shige #define SMBUS_TXRX_STP (1u << 29) /* Write only */
172 1.1 shige #define SMBUS_TXRX_RSR (1u << 28) /* Write only */
173 1.1 shige #define SMBUS_TXRX_ADDRDATA (255u << 0) /* R/W */
174 1.1 shige
175 1.1 shige
176 1.1 shige /*
177 1.1 shige * psc_smbtmr: SMBus Protocol Timers Register
178 1.1 shige * TH: Tx Data Hold Timer
179 1.1 shige * PS: Stop->Start Buffer Timer
180 1.1 shige * PU: Stop Setup Timer
181 1.1 shige * SH: Start Hold Timer
182 1.1 shige * SU: Start Setup Timer
183 1.1 shige * CL: Clock Low
184 1.1 shige * CH: Clock High
185 1.1 shige *
186 1.1 shige * [SMBus Timing Parameter Values]
187 1.1 shige *
188 1.1 shige * Standard Mode Fast Mode
189 1.1 shige * Timer Name (pscn_mainclk/8) = 6.25MHz (pscn_mainclk/2) = 25MHz
190 1.1 shige * Time unit = 160ns Time unit = 40ns
191 1.1 shige * psc_smbtmr Bus Timings psc_smbtmr Bus Timings
192 1.1 shige * Tx Hold TX = 0x00 480ns TH = 0x02 320ns
193 1.1 shige * Stop->Start PS = 0x0F 4800ns PS = 0x0F 1320ns
194 1.1 shige * Stop Setup PU = 0x0F 4000ns PU = 0x0B 600ns
195 1.1 shige * Start Hold SH = 0x0F 4000ns SH = 0x0B 600ns
196 1.1 shige * Start Setup SU = 0x0F 4800ns SU = 0x0B 600ns
197 1.1 shige * Clock Low CL = 0x0F 4800ns CL = 0x0F 1320ns
198 1.1 shige * Clock High CH = 0x0F 4000ns CH = 0x0B 600ns
199 1.1 shige */
200 1.1 shige #define SMBUS_TMR_TH (3u << 30) /* R/W */
201 1.1 shige #define SMBUS_TMR_TH_SET(x) ((x & 0x3) << 30)
202 1.1 shige #define SMBUS_TMR_PS (31u << 25) /* R/W */
203 1.1 shige #define SMBUS_TMR_PS_SET(x) ((x & 0x1f) << 25)
204 1.1 shige #define SMBUS_TMR_PU (31u << 20) /* R/W */
205 1.1 shige #define SMBUS_TMR_PU_SET(x) ((x & 0x1f) << 20)
206 1.1 shige #define SMBUS_TMR_SH (31u << 15) /* R/W */
207 1.1 shige #define SMBUS_TMR_SH_SET(x) ((x & 0x1f) << 15)
208 1.1 shige #define SMBUS_TMR_SU (31u << 10) /* R/W */
209 1.1 shige #define SMBUS_TMR_SU_SET(x) ((x & 0x1f) << 10)
210 1.1 shige #define SMBUS_TMR_CL (31u << 5) /* R/W */
211 1.1 shige #define SMBUS_TMR_CL_SET(x) ((x & 0x1f) << 5)
212 1.1 shige #define SMBUS_TMR_CH (31u << 0) /* R/W */
213 1.1 shige #define SMBUS_TMR_CH_SET(x) ((x & 0x1f) << 0)
214 1.1 shige
215 1.1 shige /* Standard Mode */
216 1.1 shige #define SMBUS_TMR_STD_TH 0x0
217 1.1 shige #define SMBUS_TMR_STD_PS 0xf
218 1.1 shige #define SMBUS_TMR_STD_PU 0xf
219 1.1 shige #define SMBUS_TMR_STD_SH 0xf
220 1.1 shige #define SMBUS_TMR_STD_SU 0xf
221 1.1 shige #define SMBUS_TMR_STD_CL 0xf
222 1.1 shige #define SMBUS_TMR_STD_CH 0xf
223 1.1 shige
224 1.1 shige /* Fast Mode */
225 1.1 shige #define SMBUS_TMR_FAST_TH 0x2
226 1.1 shige #define SMBUS_TMR_FAST_PS 0xf
227 1.1 shige #define SMBUS_TMR_FAST_PU 0xb
228 1.1 shige #define SMBUS_TMR_FAST_SH 0xb
229 1.1 shige #define SMBUS_TMR_FAST_SU 0xb
230 1.1 shige #define SMBUS_TMR_FAST_CL 0xf
231 1.1 shige #define SMBUS_TMR_FAST_CH 0xb
232 1.1 shige
233 1.1 shige #endif /* _MIPS_ALCHEMY_AUSMBUS_PSCREG_H_ */
234