1 1.2 andvar /* $NetBSD: ausmbus_pscreg.h,v 1.2 2024/06/02 19:51:22 andvar 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.2 andvar * RR: Mask Rx FIFO request interrupt 79 1.2 andvar * RO: Mask Rx FIFO overflow interrupt 80 1.2 andvar * RU: Mask Rx FIFO uderflow interrupt 81 1.2 andvar * TR: Mask Tx FIFO request interrupt 82 1.2 andvar * TO: Mask Tx FIFO overflow interrupt 83 1.2 andvar * TU: Mask Tx FIFO uderflow interrupt 84 1.2 andvar * SD: Mask Slave Done interrupt 85 1.2 andvar * MD: Mask Master Done interrupt 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.2 andvar * RR: Mask Rx FIFO request interrupt 145 1.2 andvar * RO: Mask Rx FIFO overflow interrupt 146 1.2 andvar * RU: Mask Rx FIFO uderflow interrupt 147 1.2 andvar * TR: Mask Tx FIFO request interrupt 148 1.2 andvar * TO: Mask Tx FIFO overflow interrupt 149 1.2 andvar * TU: Mask Tx FIFO uderflow interrupt 150 1.2 andvar * SD: Mask Slave Done interrupt 151 1.2 andvar * MD: Mask Master Done interrupt 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