1 1.6 martin /* $NetBSD: tx39ioreg.h,v 1.6 2008/04/28 20:23:21 martin Exp $ */ 2 1.1 uch 3 1.3 uch /*- 4 1.3 uch * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. 5 1.1 uch * All rights reserved. 6 1.1 uch * 7 1.3 uch * This code is derived from software contributed to The NetBSD Foundation 8 1.3 uch * by UCHIYAMA Yasushi. 9 1.3 uch * 10 1.1 uch * Redistribution and use in source and binary forms, with or without 11 1.1 uch * modification, are permitted provided that the following conditions 12 1.1 uch * are met: 13 1.1 uch * 1. Redistributions of source code must retain the above copyright 14 1.1 uch * notice, this list of conditions and the following disclaimer. 15 1.3 uch * 2. Redistributions in binary form must reproduce the above copyright 16 1.3 uch * notice, this list of conditions and the following disclaimer in the 17 1.3 uch * documentation and/or other materials provided with the distribution. 18 1.1 uch * 19 1.3 uch * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.3 uch * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.3 uch * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.3 uch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.3 uch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.3 uch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.3 uch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.3 uch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.3 uch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.3 uch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.3 uch * POSSIBILITY OF SUCH DAMAGE. 30 1.1 uch */ 31 1.1 uch /* 32 1.1 uch * TOSHIBA TX3912/TX3922 IO module 33 1.1 uch */ 34 1.1 uch 35 1.3 uch #ifndef __TX39IO_PRIVATE 36 1.3 uch #error "don't include this file" 37 1.3 uch #else /* !__TX39IO_PRIVATE */ 38 1.1 uch #define TX39_IOCTRL_REG 0x180 39 1.1 uch #define TX39_IOMFIODATAOUT_REG 0x184 40 1.1 uch #define TX39_IOMFIODATADIR_REG 0x188 41 1.1 uch #define TX39_IOMFIODATAIN_REG 0x18c 42 1.1 uch #define TX39_IOMFIODATASEL_REG 0x190 43 1.1 uch #define TX39_IOIOPOWERDWN_REG 0x194 44 1.1 uch #define TX39_IOMFIOPOWERDWN_REG 0x198 45 1.1 uch #ifdef TX392X 46 1.3 uch #define TX392X_IODATAINOUT_REG 0x19c 47 1.1 uch #endif /* TX392X */ 48 1.1 uch 49 1.1 uch #define TX39_IO_MFIO_MAX 32 50 1.1 uch #ifdef TX391X 51 1.3 uch #define TX391X_IO_IO_MAX 7 52 1.1 uch #endif /* TX391X */ 53 1.1 uch #ifdef TX392X 54 1.3 uch #define TX392X_IO_IO_MAX 16 55 1.1 uch #endif /* TX392X */ 56 1.1 uch 57 1.1 uch /* 58 1.1 uch * IO Control Register 59 1.1 uch */ 60 1.1 uch #ifdef TX391X 61 1.3 uch #define TX391X_IOCTRL_IODEBSEL_SHIFT 24 62 1.3 uch #define TX391X_IOCTRL_IODEBSEL_MASK 0x7f 63 1.3 uch #define TX391X_IOCTRL_IODEBSEL(cr) \ 64 1.3 uch (((cr) >> TX391X_IOCTRL_IODEBSEL_SHIFT) & \ 65 1.3 uch TX391X_IOCTRL_IODEBSEL_MASK) 66 1.3 uch #define TX391X_IOCTRL_IODEBSEL_SET(cr, val) \ 67 1.3 uch ((cr) | (((val) << TX391X_IOCTRL_IODEBSEL_SHIFT) & \ 68 1.3 uch (TX391X_IOCTRL_IODEBSEL_MASK << TX391X_IOCTRL_IODEBSEL_SHIFT))) 69 1.3 uch 70 1.3 uch #define TX391X_IOCTRL_IODIREC_SHIFT 16 71 1.3 uch #define TX391X_IOCTRL_IODIREC_MASK 0x7f 72 1.3 uch #define TX391X_IOCTRL_IODIREC(cr) \ 73 1.3 uch (((cr) >> TX391X_IOCTRL_IODIREC_SHIFT) & \ 74 1.3 uch TX391X_IOCTRL_IODIREC_MASK) 75 1.3 uch #define TX391X_IOCTRL_IODIREC_SET(cr, val) \ 76 1.3 uch ((cr) | (((val) << TX391X_IOCTRL_IODIREC_SHIFT) & \ 77 1.3 uch (TX391X_IOCTRL_IODIREC_MASK << TX391X_IOCTRL_IODIREC_SHIFT))) 78 1.3 uch 79 1.3 uch #define TX391X_IOCTRL_IODOUT_SHIFT 8 80 1.3 uch #define TX391X_IOCTRL_IODOUT_MASK 0x7f 81 1.3 uch #define TX391X_IOCTRL_IODOUT(cr) \ 82 1.3 uch (((cr) >> TX391X_IOCTRL_IODOUT_SHIFT) & \ 83 1.3 uch TX391X_IOCTRL_IODOUT_MASK) 84 1.3 uch #define TX391X_IOCTRL_IODOUT_CLR(cr) \ 85 1.3 uch ((cr) &= ~(TX391X_IOCTRL_IODOUT_MASK << TX391X_IOCTRL_IODOUT_SHIFT)) 86 1.3 uch #define TX391X_IOCTRL_IODOUT_SET(cr, val) \ 87 1.3 uch ((cr) | (((val) << TX391X_IOCTRL_IODOUT_SHIFT) & \ 88 1.3 uch (TX391X_IOCTRL_IODOUT_MASK << TX391X_IOCTRL_IODOUT_SHIFT))) 89 1.3 uch 90 1.3 uch #define TX391X_IOCTRL_IODIN_SHIFT 0 91 1.3 uch #define TX391X_IOCTRL_IODIN_MASK 0x7f 92 1.3 uch #define TX391X_IOCTRL_IODIN(cr) \ 93 1.3 uch (((cr) >> TX391X_IOCTRL_IODIN_SHIFT) & \ 94 1.3 uch TX391X_IOCTRL_IODIN_MASK) 95 1.1 uch #endif /* TX391X */ 96 1.1 uch 97 1.1 uch #ifdef TX392X 98 1.3 uch #define TX392X_IOCTRL_IODEBSEL_SHIFT 16 99 1.3 uch #define TX392X_IOCTRL_IODEBSEL_MASK 0xffff 100 1.3 uch #define TX392X_IOCTRL_IODEBSEL(cr) \ 101 1.3 uch (((cr) >> TX392X_IOCTRL_IODEBSEL_SHIFT) & \ 102 1.3 uch TX392X_IOCTRL_IODEBSEL_MASK) 103 1.3 uch #define TX392X_IOCTRL_IODEBSEL_SET(cr, val) \ 104 1.3 uch ((cr) | (((val) << TX392X_IOCTRL_IODEBSEL_SHIFT) & \ 105 1.3 uch (TX392X_IOCTRL_IODEBSEL_MASK << TX392X_IOCTRL_IODEBSEL_SHIFT))) 106 1.3 uch 107 1.3 uch #define TX392X_IOCTRL_IODIREC_SHIFT 0 108 1.3 uch #define TX392X_IOCTRL_IODIREC_MASK 0xffff 109 1.3 uch #define TX392X_IOCTRL_IODIREC(cr) \ 110 1.3 uch (((cr) >> TX392X_IOCTRL_IODIREC_SHIFT) & \ 111 1.3 uch TX392X_IOCTRL_IODIREC_MASK) 112 1.3 uch #define TX392X_IOCTRL_IODIREC_SET(cr, val) \ 113 1.3 uch ((cr) | (((val) << TX392X_IOCTRL_IODIREC_SHIFT) & \ 114 1.3 uch (TX392X_IOCTRL_IODIREC_MASK << TX392X_IOCTRL_IODIREC_SHIFT))) 115 1.3 uch 116 1.3 uch #define TX392X_IODATAINOUT_DOUT_SHIFT 16 117 1.3 uch #define TX392X_IODATAINOUT_DOUT_MASK 0xffff 118 1.3 uch #define TX392X_IODATAINOUT_DOUT(cr) \ 119 1.3 uch (((cr) >> TX392X_IODATAINOUT_DOUT_SHIFT) & \ 120 1.3 uch TX392X_IODATAINOUT_DOUT_MASK) 121 1.3 uch #define TX392X_IODATAINOUT_DOUT_SET(cr, val) \ 122 1.3 uch ((cr) | (((val) << TX392X_IODATAINOUT_DOUT_SHIFT) & \ 123 1.3 uch (TX392X_IODATAINOUT_DOUT_MASK << TX392X_IODATAINOUT_DOUT_SHIFT))) 124 1.3 uch #define TX392X_IODATAINOUT_DOUT_CLR(cr) \ 125 1.3 uch ((cr) &= ~(TX392X_IODATAINOUT_DOUT_MASK << \ 126 1.3 uch TX392X_IODATAINOUT_DOUT_SHIFT)) 127 1.3 uch 128 1.3 uch #define TX392X_IODATAINOUT_DIN_SHIFT 0 129 1.3 uch #define TX392X_IODATAINOUT_DIN_MASK 0xffff 130 1.3 uch #define TX392X_IODATAINOUT_DIN(cr) \ 131 1.3 uch (((cr) >> TX392X_IODATAINOUT_DIN_SHIFT) & \ 132 1.3 uch TX392X_IODATAINOUT_DIN_MASK) 133 1.3 uch #define TX392X_IODATAINOUT_DIN_SET(cr, val) \ 134 1.3 uch ((cr) | (((val) << TX392X_IODATAINOUT_DIN_SHIFT) & \ 135 1.3 uch (TX392X_IODATAINOUT_DIN_MASK << TX392X_IODATAINOUT_DIN_SHIFT))) 136 1.1 uch #endif /* TX392X */ 137 1.1 uch /* 138 1.1 uch * MFIO Data Output Register 139 1.1 uch */ 140 1.1 uch #define TX39_IOMFIODATAOUT_MFIODOUT 0 141 1.1 uch 142 1.1 uch /* 143 1.1 uch * MFIO Data Direction Register 144 1.1 uch */ 145 1.1 uch #define TX39_IOMFIODATADIR_MFIODIREC 0 146 1.1 uch 147 1.1 uch /* 148 1.1 uch * MFIO Data Input Register 149 1.1 uch */ 150 1.1 uch #define TX39_IOMFIODATAIN_MFIODIN 0 151 1.1 uch 152 1.1 uch /* 153 1.1 uch * MFIO Data Select Register 154 1.1 uch */ 155 1.1 uch #define TX39_IOMFIODATASEL_MFIOSEL 0 156 1.1 uch #define TX39_IOMFIODATASEL_MFIOSEL_RESET 0xf20f0fff 157 1.1 uch 158 1.1 uch /* 159 1.1 uch * IO Power Down Register 160 1.1 uch */ 161 1.1 uch #ifdef TX391X 162 1.3 uch #define TX391X_IOIOPOWERDWN_IOPD_SHIFT 0 163 1.3 uch #define TX391X_IOIOPOWERDWN_IOPD_MASK 0x7f 164 1.3 uch #define TX391X_IOIOPOWERDWN_IOPD_RESET 0x7f 165 1.3 uch #define TX391X_IOIOPOWERDWN_IOPD(cr) \ 166 1.3 uch (((cr) >> TX391X_IOIOPOWERDWN_IOPD_SHIFT) & \ 167 1.3 uch TX391X_IOIOPOWERDWN_IOPD_MASK) 168 1.3 uch #define TX391X_IOIOPOWERDWN_IOPD_SET(cr, val) \ 169 1.3 uch ((cr) | (((val) << TX391X_IOIOPOWERDWN_IOPD_SHIFT) & \ 170 1.3 uch (TX391X_IOIOPOWERDWN_IOPD_MASK << TX391X_IOIOPOWERDOWN_IOPD_SHIFT))) 171 1.1 uch #endif /* TX391X */ 172 1.1 uch #ifdef TX392X 173 1.3 uch #define TX392X_IOIOPOWERDWN_IOPD_SHIFT 0 174 1.3 uch #define TX392X_IOIOPOWERDWN_IOPD_MASK 0xffff 175 1.3 uch #define TX392X_IOIOPOWERDWN_IOPD_RESET 0x0fff 176 1.3 uch #define TX392X_IOIOPOWERDWN_IOPD(cr) \ 177 1.3 uch (((cr) >> TX392X_IOIOPOWERDWN_IOPD_SHIFT) & \ 178 1.3 uch TX392X_IOIOPOWERDWN_IOPD_MASK) 179 1.3 uch #define TX392X_IOIOPOWERDWN_IOPD_SET(cr, val) \ 180 1.3 uch ((cr) | (((val) << TX392X_IOIOPOWERDWN_IOPD_SHIFT) & \ 181 1.3 uch (TX392X_IOIOPOWERDWN_IOPD_MASK << TX392X_IOIOPOWERDOWN_IOPD_SHIFT))) 182 1.1 uch #endif /* TX392X */ 183 1.1 uch 184 1.1 uch 185 1.1 uch /* 186 1.1 uch * MFIO Power Down Register 187 1.1 uch */ 188 1.1 uch #define TX39_IOMFIOPOWERDWN_MFIOPD 0 189 1.1 uch #define TX39_IOMFIOPOWERDWN_MFIOPD_RESET 0xfaf03ffc 190 1.3 uch 191 1.3 uch /* 192 1.3 uch * MFIO mapping 193 1.3 uch */ 194 1.3 uch struct tx39io_mfio_map { 195 1.4 he const char *std_pin_name; 196 1.3 uch int std_type; 197 1.3 uch #define STD_IN 1 198 1.3 uch #define STD_OUT 2 199 1.3 uch #define STD_INOUT 3 200 1.3 uch }; 201 1.3 uch 202 1.3 uch #ifdef TX391X 203 1.3 uch static const struct tx39io_mfio_map 204 1.3 uch tx391x_mfio_map[TX39_IO_MFIO_MAX] = { 205 1.3 uch [31] = {"CHIFS", STD_INOUT}, 206 1.3 uch [30] = {"CHICLK", STD_INOUT}, 207 1.3 uch [29] = {"CHIDOUT", STD_OUT}, 208 1.3 uch [28] = {"CHIDIN", STD_IN}, 209 1.3 uch [27] = {"DREQ", STD_IN}, 210 1.3 uch [26] = {"DGRINT", STD_OUT}, 211 1.3 uch [25] = {"BC32K", STD_OUT}, 212 1.3 uch [24] = {"TXD", STD_OUT}, 213 1.3 uch [23] = {"RXD", STD_IN}, 214 1.3 uch [22] = {"CS1", STD_OUT}, 215 1.3 uch [21] = {"CS2", STD_OUT}, 216 1.3 uch [20] = {"CS3", STD_OUT}, 217 1.3 uch [19] = {"MCS0", STD_OUT}, 218 1.3 uch [18] = {"MCS1", STD_OUT}, 219 1.3 uch [17] = {"MCS2", STD_OUT}, 220 1.3 uch [16] = {"MCS3", STD_OUT}, 221 1.3 uch [15] = {"SPICLK", STD_OUT}, 222 1.3 uch [14] = {"SPIOUT", STD_OUT}, 223 1.3 uch [13] = {"SPIN", STD_IN}, 224 1.3 uch [12] = {"SIBMCLK", STD_INOUT}, 225 1.3 uch [11] = {"CARDREG", STD_OUT}, 226 1.3 uch [10] = {"CARDIOWR", STD_OUT}, 227 1.3 uch [9] = {"CARDIORD", STD_OUT}, 228 1.3 uch [8] = {"CARD1CSL", STD_OUT}, 229 1.3 uch [7] = {"CARD1CSH", STD_OUT}, 230 1.3 uch [6] = {"CARD2CSL", STD_OUT}, 231 1.3 uch [5] = {"CARD2CSH", STD_OUT}, 232 1.3 uch [4] = {"CARD1WAIT", STD_IN}, 233 1.3 uch [3] = {"CARD2WAIT", STD_IN}, 234 1.3 uch [2] = {"CARDDIR", STD_OUT}, 235 1.3 uch [1] = {"MFIO[1]", 0}, 236 1.3 uch [0] = {"MFIO[0]", 0} 237 1.3 uch }; 238 1.3 uch #endif /* TX391X */ 239 1.3 uch 240 1.3 uch #ifdef TX392X 241 1.3 uch static const struct tx39io_mfio_map 242 1.3 uch tx392x_mfio_map[TX39_IO_MFIO_MAX] = { 243 1.3 uch [31] = {"CHIFS", STD_INOUT}, 244 1.3 uch [30] = {"CHICLK", STD_INOUT}, 245 1.3 uch [29] = {"CHIDOUT", STD_OUT}, 246 1.3 uch [28] = {"CHIDIN", STD_IN}, 247 1.3 uch [27] = {"DREQ", STD_IN}, 248 1.3 uch [26] = {"DGRINT", STD_OUT}, 249 1.3 uch [25] = {"BC32K", STD_OUT}, 250 1.3 uch [24] = {"TXD", STD_OUT}, 251 1.3 uch [23] = {"RXD", STD_IN}, 252 1.3 uch [22] = {"CS1", STD_OUT}, 253 1.3 uch [21] = {"CS2", STD_OUT}, 254 1.3 uch [20] = {"CS3", STD_OUT}, 255 1.3 uch [19] = {"MCS0", STD_OUT}, 256 1.3 uch [18] = {"MCS1", STD_OUT}, 257 1.3 uch [17] = {"RXPWR", STD_OUT}, 258 1.3 uch [16] = {"IROUT", STD_OUT}, 259 1.3 uch [15] = {"SPICLK", STD_OUT}, 260 1.3 uch [14] = {"SPIOUT", STD_OUT}, 261 1.3 uch [13] = {"SPIN", STD_IN}, 262 1.3 uch [12] = {"SIBMCLK", STD_INOUT}, 263 1.3 uch [11] = {"CARDREG", STD_OUT}, 264 1.3 uch [10] = {"CARDIOWR", STD_OUT}, 265 1.3 uch [9] = {"CARDIORD", STD_OUT}, 266 1.3 uch [8] = {"CARD1CSL", STD_OUT}, 267 1.3 uch [7] = {"CARD1CSH", STD_OUT}, 268 1.3 uch [6] = {"CARD2CSL", STD_OUT}, 269 1.3 uch [5] = {"CARD2CSH", STD_OUT}, 270 1.3 uch [4] = {"CARD1WAIT", STD_IN}, 271 1.3 uch [3] = {"CARD2WAIT", STD_IN}, 272 1.3 uch [2] = {"CARDDIR", STD_OUT}, 273 1.3 uch [1] = {"MCS1WAIT", 0}, 274 1.3 uch [0] = {"MCS0WAIT", 0} 275 1.3 uch }; 276 1.3 uch #endif /* TX392X */ 277 1.3 uch 278 1.3 uch #if defined TX391X && defined TX392X 279 1.3 uch #define tx39io_get_mfio_map(c) \ 280 1.3 uch (IS_TX391X(c) ? tx391x_mfio_map : tx392x_mfio_map) 281 1.3 uch #define tx39io_get_io_max(c) \ 282 1.3 uch (IS_TX391X(c) ? TX391X_IO_IO_MAX : TX392X_IO_IO_MAX) 283 1.3 uch #elif defined TX391X 284 1.3 uch #define tx39io_get_mfio_map(c) tx391x_mfio_map 285 1.3 uch #define tx39io_get_io_max(c) TX391X_IO_IO_MAX 286 1.3 uch #elif defined TX392X 287 1.3 uch #define tx39io_get_mfio_map(c) tx392x_mfio_map 288 1.3 uch #define tx39io_get_io_max(c) TX392X_IO_IO_MAX 289 1.3 uch #endif 290 1.3 uch 291 1.3 uch #endif /* !__TX39IO_PRIVATE */ 292 1.1 uch 293