1 // THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT 2 3 /** 4 * Copyright (c) 2024 Raspberry Pi Ltd. 5 * 6 * SPDX-License-Identifier: BSD-3-Clause 7 */ 8 // ============================================================================= 9 // Register block : SIO 10 // Version : 1 11 // Bus type : apb 12 // Description : Single-cycle IO block 13 // Provides core-local and inter-core hardware for the two 14 // processors, with single-cycle access. 15 // ============================================================================= 16 #ifndef _HARDWARE_REGS_SIO_H 17 #define _HARDWARE_REGS_SIO_H 18 // ============================================================================= 19 // Register : SIO_CPUID 20 // Description : Processor core identifier 21 // Value is 0 when read from processor core 0, and 1 when read 22 // from processor core 1. 23 #define SIO_CPUID_OFFSET _u(0x00000000) 24 #define SIO_CPUID_BITS _u(0xffffffff) 25 #define SIO_CPUID_RESET "-" 26 #define SIO_CPUID_MSB _u(31) 27 #define SIO_CPUID_LSB _u(0) 28 #define SIO_CPUID_ACCESS "RO" 29 // ============================================================================= 30 // Register : SIO_GPIO_IN 31 // Description : Input value for GPIO0...31. 32 // 33 // In the Non-secure SIO, Secure-only GPIOs (as per ACCESSCTRL) 34 // appear as zero. 35 #define SIO_GPIO_IN_OFFSET _u(0x00000004) 36 #define SIO_GPIO_IN_BITS _u(0xffffffff) 37 #define SIO_GPIO_IN_RESET _u(0x00000000) 38 #define SIO_GPIO_IN_MSB _u(31) 39 #define SIO_GPIO_IN_LSB _u(0) 40 #define SIO_GPIO_IN_ACCESS "RO" 41 // ============================================================================= 42 // Register : SIO_GPIO_HI_IN 43 // Description : Input value on GPIO32...47, QSPI IOs and USB pins 44 // 45 // In the Non-secure SIO, Secure-only GPIOs (as per ACCESSCTRL) 46 // appear as zero. 47 #define SIO_GPIO_HI_IN_OFFSET _u(0x00000008) 48 #define SIO_GPIO_HI_IN_BITS _u(0xff00ffff) 49 #define SIO_GPIO_HI_IN_RESET _u(0x00000000) 50 // ----------------------------------------------------------------------------- 51 // Field : SIO_GPIO_HI_IN_QSPI_SD 52 // Description : Input value on QSPI SD0 (MOSI), SD1 (MISO), SD2 and SD3 pins 53 #define SIO_GPIO_HI_IN_QSPI_SD_RESET _u(0x0) 54 #define SIO_GPIO_HI_IN_QSPI_SD_BITS _u(0xf0000000) 55 #define SIO_GPIO_HI_IN_QSPI_SD_MSB _u(31) 56 #define SIO_GPIO_HI_IN_QSPI_SD_LSB _u(28) 57 #define SIO_GPIO_HI_IN_QSPI_SD_ACCESS "RO" 58 // ----------------------------------------------------------------------------- 59 // Field : SIO_GPIO_HI_IN_QSPI_CSN 60 // Description : Input value on QSPI CSn pin 61 #define SIO_GPIO_HI_IN_QSPI_CSN_RESET _u(0x0) 62 #define SIO_GPIO_HI_IN_QSPI_CSN_BITS _u(0x08000000) 63 #define SIO_GPIO_HI_IN_QSPI_CSN_MSB _u(27) 64 #define SIO_GPIO_HI_IN_QSPI_CSN_LSB _u(27) 65 #define SIO_GPIO_HI_IN_QSPI_CSN_ACCESS "RO" 66 // ----------------------------------------------------------------------------- 67 // Field : SIO_GPIO_HI_IN_QSPI_SCK 68 // Description : Input value on QSPI SCK pin 69 #define SIO_GPIO_HI_IN_QSPI_SCK_RESET _u(0x0) 70 #define SIO_GPIO_HI_IN_QSPI_SCK_BITS _u(0x04000000) 71 #define SIO_GPIO_HI_IN_QSPI_SCK_MSB _u(26) 72 #define SIO_GPIO_HI_IN_QSPI_SCK_LSB _u(26) 73 #define SIO_GPIO_HI_IN_QSPI_SCK_ACCESS "RO" 74 // ----------------------------------------------------------------------------- 75 // Field : SIO_GPIO_HI_IN_USB_DM 76 // Description : Input value on USB D- pin 77 #define SIO_GPIO_HI_IN_USB_DM_RESET _u(0x0) 78 #define SIO_GPIO_HI_IN_USB_DM_BITS _u(0x02000000) 79 #define SIO_GPIO_HI_IN_USB_DM_MSB _u(25) 80 #define SIO_GPIO_HI_IN_USB_DM_LSB _u(25) 81 #define SIO_GPIO_HI_IN_USB_DM_ACCESS "RO" 82 // ----------------------------------------------------------------------------- 83 // Field : SIO_GPIO_HI_IN_USB_DP 84 // Description : Input value on USB D+ pin 85 #define SIO_GPIO_HI_IN_USB_DP_RESET _u(0x0) 86 #define SIO_GPIO_HI_IN_USB_DP_BITS _u(0x01000000) 87 #define SIO_GPIO_HI_IN_USB_DP_MSB _u(24) 88 #define SIO_GPIO_HI_IN_USB_DP_LSB _u(24) 89 #define SIO_GPIO_HI_IN_USB_DP_ACCESS "RO" 90 // ----------------------------------------------------------------------------- 91 // Field : SIO_GPIO_HI_IN_GPIO 92 // Description : Input value on GPIO32...47 93 #define SIO_GPIO_HI_IN_GPIO_RESET _u(0x0000) 94 #define SIO_GPIO_HI_IN_GPIO_BITS _u(0x0000ffff) 95 #define SIO_GPIO_HI_IN_GPIO_MSB _u(15) 96 #define SIO_GPIO_HI_IN_GPIO_LSB _u(0) 97 #define SIO_GPIO_HI_IN_GPIO_ACCESS "RO" 98 // ============================================================================= 99 // Register : SIO_GPIO_OUT 100 // Description : GPIO0...31 output value 101 // Set output level (1/0 -> high/low) for GPIO0...31. Reading back 102 // gives the last value written, NOT the input value from the 103 // pins. 104 // 105 // If core 0 and core 1 both write to GPIO_OUT simultaneously (or 106 // to a SET/CLR/XOR alias), the result is as though the write from 107 // core 0 took place first, and the write from core 1 was then 108 // applied to that intermediate result. 109 // 110 // In the Non-secure SIO, Secure-only GPIOs (as per ACCESSCTRL) 111 // ignore writes, and their output status reads back as zero. This 112 // is also true for SET/CLR/XOR aliases of this register. 113 #define SIO_GPIO_OUT_OFFSET _u(0x00000010) 114 #define SIO_GPIO_OUT_BITS _u(0xffffffff) 115 #define SIO_GPIO_OUT_RESET _u(0x00000000) 116 #define SIO_GPIO_OUT_MSB _u(31) 117 #define SIO_GPIO_OUT_LSB _u(0) 118 #define SIO_GPIO_OUT_ACCESS "RW" 119 // ============================================================================= 120 // Register : SIO_GPIO_HI_OUT 121 // Description : Output value for GPIO32...47, QSPI IOs and USB pins. 122 // 123 // Write to set output level (1/0 -> high/low). Reading back gives 124 // the last value written, NOT the input value from the pins. If 125 // core 0 and core 1 both write to GPIO_HI_OUT simultaneously (or 126 // to a SET/CLR/XOR alias), the result is as though the write from 127 // core 0 took place first, and the write from core 1 was then 128 // applied to that intermediate result. 129 // 130 // In the Non-secure SIO, Secure-only GPIOs (as per ACCESSCTRL) 131 // ignore writes, and their output status reads back as zero. This 132 // is also true for SET/CLR/XOR aliases of this register. 133 #define SIO_GPIO_HI_OUT_OFFSET _u(0x00000014) 134 #define SIO_GPIO_HI_OUT_BITS _u(0xff00ffff) 135 #define SIO_GPIO_HI_OUT_RESET _u(0x00000000) 136 // ----------------------------------------------------------------------------- 137 // Field : SIO_GPIO_HI_OUT_QSPI_SD 138 // Description : Output value for QSPI SD0 (MOSI), SD1 (MISO), SD2 and SD3 pins 139 #define SIO_GPIO_HI_OUT_QSPI_SD_RESET _u(0x0) 140 #define SIO_GPIO_HI_OUT_QSPI_SD_BITS _u(0xf0000000) 141 #define SIO_GPIO_HI_OUT_QSPI_SD_MSB _u(31) 142 #define SIO_GPIO_HI_OUT_QSPI_SD_LSB _u(28) 143 #define SIO_GPIO_HI_OUT_QSPI_SD_ACCESS "RW" 144 // ----------------------------------------------------------------------------- 145 // Field : SIO_GPIO_HI_OUT_QSPI_CSN 146 // Description : Output value for QSPI CSn pin 147 #define SIO_GPIO_HI_OUT_QSPI_CSN_RESET _u(0x0) 148 #define SIO_GPIO_HI_OUT_QSPI_CSN_BITS _u(0x08000000) 149 #define SIO_GPIO_HI_OUT_QSPI_CSN_MSB _u(27) 150 #define SIO_GPIO_HI_OUT_QSPI_CSN_LSB _u(27) 151 #define SIO_GPIO_HI_OUT_QSPI_CSN_ACCESS "RW" 152 // ----------------------------------------------------------------------------- 153 // Field : SIO_GPIO_HI_OUT_QSPI_SCK 154 // Description : Output value for QSPI SCK pin 155 #define SIO_GPIO_HI_OUT_QSPI_SCK_RESET _u(0x0) 156 #define SIO_GPIO_HI_OUT_QSPI_SCK_BITS _u(0x04000000) 157 #define SIO_GPIO_HI_OUT_QSPI_SCK_MSB _u(26) 158 #define SIO_GPIO_HI_OUT_QSPI_SCK_LSB _u(26) 159 #define SIO_GPIO_HI_OUT_QSPI_SCK_ACCESS "RW" 160 // ----------------------------------------------------------------------------- 161 // Field : SIO_GPIO_HI_OUT_USB_DM 162 // Description : Output value for USB D- pin 163 #define SIO_GPIO_HI_OUT_USB_DM_RESET _u(0x0) 164 #define SIO_GPIO_HI_OUT_USB_DM_BITS _u(0x02000000) 165 #define SIO_GPIO_HI_OUT_USB_DM_MSB _u(25) 166 #define SIO_GPIO_HI_OUT_USB_DM_LSB _u(25) 167 #define SIO_GPIO_HI_OUT_USB_DM_ACCESS "RW" 168 // ----------------------------------------------------------------------------- 169 // Field : SIO_GPIO_HI_OUT_USB_DP 170 // Description : Output value for USB D+ pin 171 #define SIO_GPIO_HI_OUT_USB_DP_RESET _u(0x0) 172 #define SIO_GPIO_HI_OUT_USB_DP_BITS _u(0x01000000) 173 #define SIO_GPIO_HI_OUT_USB_DP_MSB _u(24) 174 #define SIO_GPIO_HI_OUT_USB_DP_LSB _u(24) 175 #define SIO_GPIO_HI_OUT_USB_DP_ACCESS "RW" 176 // ----------------------------------------------------------------------------- 177 // Field : SIO_GPIO_HI_OUT_GPIO 178 // Description : Output value for GPIO32...47 179 #define SIO_GPIO_HI_OUT_GPIO_RESET _u(0x0000) 180 #define SIO_GPIO_HI_OUT_GPIO_BITS _u(0x0000ffff) 181 #define SIO_GPIO_HI_OUT_GPIO_MSB _u(15) 182 #define SIO_GPIO_HI_OUT_GPIO_LSB _u(0) 183 #define SIO_GPIO_HI_OUT_GPIO_ACCESS "RW" 184 // ============================================================================= 185 // Register : SIO_GPIO_OUT_SET 186 // Description : GPIO0...31 output value set 187 // Perform an atomic bit-set on GPIO_OUT, i.e. `GPIO_OUT |= wdata` 188 #define SIO_GPIO_OUT_SET_OFFSET _u(0x00000018) 189 #define SIO_GPIO_OUT_SET_BITS _u(0xffffffff) 190 #define SIO_GPIO_OUT_SET_RESET _u(0x00000000) 191 #define SIO_GPIO_OUT_SET_MSB _u(31) 192 #define SIO_GPIO_OUT_SET_LSB _u(0) 193 #define SIO_GPIO_OUT_SET_ACCESS "WO" 194 // ============================================================================= 195 // Register : SIO_GPIO_HI_OUT_SET 196 // Description : Output value set for GPIO32..47, QSPI IOs and USB pins. 197 // Perform an atomic bit-set on GPIO_HI_OUT, i.e. `GPIO_HI_OUT |= 198 // wdata` 199 #define SIO_GPIO_HI_OUT_SET_OFFSET _u(0x0000001c) 200 #define SIO_GPIO_HI_OUT_SET_BITS _u(0xff00ffff) 201 #define SIO_GPIO_HI_OUT_SET_RESET _u(0x00000000) 202 // ----------------------------------------------------------------------------- 203 // Field : SIO_GPIO_HI_OUT_SET_QSPI_SD 204 #define SIO_GPIO_HI_OUT_SET_QSPI_SD_RESET _u(0x0) 205 #define SIO_GPIO_HI_OUT_SET_QSPI_SD_BITS _u(0xf0000000) 206 #define SIO_GPIO_HI_OUT_SET_QSPI_SD_MSB _u(31) 207 #define SIO_GPIO_HI_OUT_SET_QSPI_SD_LSB _u(28) 208 #define SIO_GPIO_HI_OUT_SET_QSPI_SD_ACCESS "WO" 209 // ----------------------------------------------------------------------------- 210 // Field : SIO_GPIO_HI_OUT_SET_QSPI_CSN 211 #define SIO_GPIO_HI_OUT_SET_QSPI_CSN_RESET _u(0x0) 212 #define SIO_GPIO_HI_OUT_SET_QSPI_CSN_BITS _u(0x08000000) 213 #define SIO_GPIO_HI_OUT_SET_QSPI_CSN_MSB _u(27) 214 #define SIO_GPIO_HI_OUT_SET_QSPI_CSN_LSB _u(27) 215 #define SIO_GPIO_HI_OUT_SET_QSPI_CSN_ACCESS "WO" 216 // ----------------------------------------------------------------------------- 217 // Field : SIO_GPIO_HI_OUT_SET_QSPI_SCK 218 #define SIO_GPIO_HI_OUT_SET_QSPI_SCK_RESET _u(0x0) 219 #define SIO_GPIO_HI_OUT_SET_QSPI_SCK_BITS _u(0x04000000) 220 #define SIO_GPIO_HI_OUT_SET_QSPI_SCK_MSB _u(26) 221 #define SIO_GPIO_HI_OUT_SET_QSPI_SCK_LSB _u(26) 222 #define SIO_GPIO_HI_OUT_SET_QSPI_SCK_ACCESS "WO" 223 // ----------------------------------------------------------------------------- 224 // Field : SIO_GPIO_HI_OUT_SET_USB_DM 225 #define SIO_GPIO_HI_OUT_SET_USB_DM_RESET _u(0x0) 226 #define SIO_GPIO_HI_OUT_SET_USB_DM_BITS _u(0x02000000) 227 #define SIO_GPIO_HI_OUT_SET_USB_DM_MSB _u(25) 228 #define SIO_GPIO_HI_OUT_SET_USB_DM_LSB _u(25) 229 #define SIO_GPIO_HI_OUT_SET_USB_DM_ACCESS "WO" 230 // ----------------------------------------------------------------------------- 231 // Field : SIO_GPIO_HI_OUT_SET_USB_DP 232 #define SIO_GPIO_HI_OUT_SET_USB_DP_RESET _u(0x0) 233 #define SIO_GPIO_HI_OUT_SET_USB_DP_BITS _u(0x01000000) 234 #define SIO_GPIO_HI_OUT_SET_USB_DP_MSB _u(24) 235 #define SIO_GPIO_HI_OUT_SET_USB_DP_LSB _u(24) 236 #define SIO_GPIO_HI_OUT_SET_USB_DP_ACCESS "WO" 237 // ----------------------------------------------------------------------------- 238 // Field : SIO_GPIO_HI_OUT_SET_GPIO 239 #define SIO_GPIO_HI_OUT_SET_GPIO_RESET _u(0x0000) 240 #define SIO_GPIO_HI_OUT_SET_GPIO_BITS _u(0x0000ffff) 241 #define SIO_GPIO_HI_OUT_SET_GPIO_MSB _u(15) 242 #define SIO_GPIO_HI_OUT_SET_GPIO_LSB _u(0) 243 #define SIO_GPIO_HI_OUT_SET_GPIO_ACCESS "WO" 244 // ============================================================================= 245 // Register : SIO_GPIO_OUT_CLR 246 // Description : GPIO0...31 output value clear 247 // Perform an atomic bit-clear on GPIO_OUT, i.e. `GPIO_OUT &= 248 // ~wdata` 249 #define SIO_GPIO_OUT_CLR_OFFSET _u(0x00000020) 250 #define SIO_GPIO_OUT_CLR_BITS _u(0xffffffff) 251 #define SIO_GPIO_OUT_CLR_RESET _u(0x00000000) 252 #define SIO_GPIO_OUT_CLR_MSB _u(31) 253 #define SIO_GPIO_OUT_CLR_LSB _u(0) 254 #define SIO_GPIO_OUT_CLR_ACCESS "WO" 255 // ============================================================================= 256 // Register : SIO_GPIO_HI_OUT_CLR 257 // Description : Output value clear for GPIO32..47, QSPI IOs and USB pins. 258 // Perform an atomic bit-clear on GPIO_HI_OUT, i.e. `GPIO_HI_OUT 259 // &= ~wdata` 260 #define SIO_GPIO_HI_OUT_CLR_OFFSET _u(0x00000024) 261 #define SIO_GPIO_HI_OUT_CLR_BITS _u(0xff00ffff) 262 #define SIO_GPIO_HI_OUT_CLR_RESET _u(0x00000000) 263 // ----------------------------------------------------------------------------- 264 // Field : SIO_GPIO_HI_OUT_CLR_QSPI_SD 265 #define SIO_GPIO_HI_OUT_CLR_QSPI_SD_RESET _u(0x0) 266 #define SIO_GPIO_HI_OUT_CLR_QSPI_SD_BITS _u(0xf0000000) 267 #define SIO_GPIO_HI_OUT_CLR_QSPI_SD_MSB _u(31) 268 #define SIO_GPIO_HI_OUT_CLR_QSPI_SD_LSB _u(28) 269 #define SIO_GPIO_HI_OUT_CLR_QSPI_SD_ACCESS "WO" 270 // ----------------------------------------------------------------------------- 271 // Field : SIO_GPIO_HI_OUT_CLR_QSPI_CSN 272 #define SIO_GPIO_HI_OUT_CLR_QSPI_CSN_RESET _u(0x0) 273 #define SIO_GPIO_HI_OUT_CLR_QSPI_CSN_BITS _u(0x08000000) 274 #define SIO_GPIO_HI_OUT_CLR_QSPI_CSN_MSB _u(27) 275 #define SIO_GPIO_HI_OUT_CLR_QSPI_CSN_LSB _u(27) 276 #define SIO_GPIO_HI_OUT_CLR_QSPI_CSN_ACCESS "WO" 277 // ----------------------------------------------------------------------------- 278 // Field : SIO_GPIO_HI_OUT_CLR_QSPI_SCK 279 #define SIO_GPIO_HI_OUT_CLR_QSPI_SCK_RESET _u(0x0) 280 #define SIO_GPIO_HI_OUT_CLR_QSPI_SCK_BITS _u(0x04000000) 281 #define SIO_GPIO_HI_OUT_CLR_QSPI_SCK_MSB _u(26) 282 #define SIO_GPIO_HI_OUT_CLR_QSPI_SCK_LSB _u(26) 283 #define SIO_GPIO_HI_OUT_CLR_QSPI_SCK_ACCESS "WO" 284 // ----------------------------------------------------------------------------- 285 // Field : SIO_GPIO_HI_OUT_CLR_USB_DM 286 #define SIO_GPIO_HI_OUT_CLR_USB_DM_RESET _u(0x0) 287 #define SIO_GPIO_HI_OUT_CLR_USB_DM_BITS _u(0x02000000) 288 #define SIO_GPIO_HI_OUT_CLR_USB_DM_MSB _u(25) 289 #define SIO_GPIO_HI_OUT_CLR_USB_DM_LSB _u(25) 290 #define SIO_GPIO_HI_OUT_CLR_USB_DM_ACCESS "WO" 291 // ----------------------------------------------------------------------------- 292 // Field : SIO_GPIO_HI_OUT_CLR_USB_DP 293 #define SIO_GPIO_HI_OUT_CLR_USB_DP_RESET _u(0x0) 294 #define SIO_GPIO_HI_OUT_CLR_USB_DP_BITS _u(0x01000000) 295 #define SIO_GPIO_HI_OUT_CLR_USB_DP_MSB _u(24) 296 #define SIO_GPIO_HI_OUT_CLR_USB_DP_LSB _u(24) 297 #define SIO_GPIO_HI_OUT_CLR_USB_DP_ACCESS "WO" 298 // ----------------------------------------------------------------------------- 299 // Field : SIO_GPIO_HI_OUT_CLR_GPIO 300 #define SIO_GPIO_HI_OUT_CLR_GPIO_RESET _u(0x0000) 301 #define SIO_GPIO_HI_OUT_CLR_GPIO_BITS _u(0x0000ffff) 302 #define SIO_GPIO_HI_OUT_CLR_GPIO_MSB _u(15) 303 #define SIO_GPIO_HI_OUT_CLR_GPIO_LSB _u(0) 304 #define SIO_GPIO_HI_OUT_CLR_GPIO_ACCESS "WO" 305 // ============================================================================= 306 // Register : SIO_GPIO_OUT_XOR 307 // Description : GPIO0...31 output value XOR 308 // Perform an atomic bitwise XOR on GPIO_OUT, i.e. `GPIO_OUT ^= 309 // wdata` 310 #define SIO_GPIO_OUT_XOR_OFFSET _u(0x00000028) 311 #define SIO_GPIO_OUT_XOR_BITS _u(0xffffffff) 312 #define SIO_GPIO_OUT_XOR_RESET _u(0x00000000) 313 #define SIO_GPIO_OUT_XOR_MSB _u(31) 314 #define SIO_GPIO_OUT_XOR_LSB _u(0) 315 #define SIO_GPIO_OUT_XOR_ACCESS "WO" 316 // ============================================================================= 317 // Register : SIO_GPIO_HI_OUT_XOR 318 // Description : Output value XOR for GPIO32..47, QSPI IOs and USB pins. 319 // Perform an atomic bitwise XOR on GPIO_HI_OUT, i.e. `GPIO_HI_OUT 320 // ^= wdata` 321 #define SIO_GPIO_HI_OUT_XOR_OFFSET _u(0x0000002c) 322 #define SIO_GPIO_HI_OUT_XOR_BITS _u(0xff00ffff) 323 #define SIO_GPIO_HI_OUT_XOR_RESET _u(0x00000000) 324 // ----------------------------------------------------------------------------- 325 // Field : SIO_GPIO_HI_OUT_XOR_QSPI_SD 326 #define SIO_GPIO_HI_OUT_XOR_QSPI_SD_RESET _u(0x0) 327 #define SIO_GPIO_HI_OUT_XOR_QSPI_SD_BITS _u(0xf0000000) 328 #define SIO_GPIO_HI_OUT_XOR_QSPI_SD_MSB _u(31) 329 #define SIO_GPIO_HI_OUT_XOR_QSPI_SD_LSB _u(28) 330 #define SIO_GPIO_HI_OUT_XOR_QSPI_SD_ACCESS "WO" 331 // ----------------------------------------------------------------------------- 332 // Field : SIO_GPIO_HI_OUT_XOR_QSPI_CSN 333 #define SIO_GPIO_HI_OUT_XOR_QSPI_CSN_RESET _u(0x0) 334 #define SIO_GPIO_HI_OUT_XOR_QSPI_CSN_BITS _u(0x08000000) 335 #define SIO_GPIO_HI_OUT_XOR_QSPI_CSN_MSB _u(27) 336 #define SIO_GPIO_HI_OUT_XOR_QSPI_CSN_LSB _u(27) 337 #define SIO_GPIO_HI_OUT_XOR_QSPI_CSN_ACCESS "WO" 338 // ----------------------------------------------------------------------------- 339 // Field : SIO_GPIO_HI_OUT_XOR_QSPI_SCK 340 #define SIO_GPIO_HI_OUT_XOR_QSPI_SCK_RESET _u(0x0) 341 #define SIO_GPIO_HI_OUT_XOR_QSPI_SCK_BITS _u(0x04000000) 342 #define SIO_GPIO_HI_OUT_XOR_QSPI_SCK_MSB _u(26) 343 #define SIO_GPIO_HI_OUT_XOR_QSPI_SCK_LSB _u(26) 344 #define SIO_GPIO_HI_OUT_XOR_QSPI_SCK_ACCESS "WO" 345 // ----------------------------------------------------------------------------- 346 // Field : SIO_GPIO_HI_OUT_XOR_USB_DM 347 #define SIO_GPIO_HI_OUT_XOR_USB_DM_RESET _u(0x0) 348 #define SIO_GPIO_HI_OUT_XOR_USB_DM_BITS _u(0x02000000) 349 #define SIO_GPIO_HI_OUT_XOR_USB_DM_MSB _u(25) 350 #define SIO_GPIO_HI_OUT_XOR_USB_DM_LSB _u(25) 351 #define SIO_GPIO_HI_OUT_XOR_USB_DM_ACCESS "WO" 352 // ----------------------------------------------------------------------------- 353 // Field : SIO_GPIO_HI_OUT_XOR_USB_DP 354 #define SIO_GPIO_HI_OUT_XOR_USB_DP_RESET _u(0x0) 355 #define SIO_GPIO_HI_OUT_XOR_USB_DP_BITS _u(0x01000000) 356 #define SIO_GPIO_HI_OUT_XOR_USB_DP_MSB _u(24) 357 #define SIO_GPIO_HI_OUT_XOR_USB_DP_LSB _u(24) 358 #define SIO_GPIO_HI_OUT_XOR_USB_DP_ACCESS "WO" 359 // ----------------------------------------------------------------------------- 360 // Field : SIO_GPIO_HI_OUT_XOR_GPIO 361 #define SIO_GPIO_HI_OUT_XOR_GPIO_RESET _u(0x0000) 362 #define SIO_GPIO_HI_OUT_XOR_GPIO_BITS _u(0x0000ffff) 363 #define SIO_GPIO_HI_OUT_XOR_GPIO_MSB _u(15) 364 #define SIO_GPIO_HI_OUT_XOR_GPIO_LSB _u(0) 365 #define SIO_GPIO_HI_OUT_XOR_GPIO_ACCESS "WO" 366 // ============================================================================= 367 // Register : SIO_GPIO_OE 368 // Description : GPIO0...31 output enable 369 // Set output enable (1/0 -> output/input) for GPIO0...31. Reading 370 // back gives the last value written. 371 // 372 // If core 0 and core 1 both write to GPIO_OE simultaneously (or 373 // to a SET/CLR/XOR alias), the result is as though the write from 374 // core 0 took place first, and the write from core 1 was then 375 // applied to that intermediate result. 376 // 377 // In the Non-secure SIO, Secure-only GPIOs (as per ACCESSCTRL) 378 // ignore writes, and their output status reads back as zero. This 379 // is also true for SET/CLR/XOR aliases of this register. 380 #define SIO_GPIO_OE_OFFSET _u(0x00000030) 381 #define SIO_GPIO_OE_BITS _u(0xffffffff) 382 #define SIO_GPIO_OE_RESET _u(0x00000000) 383 #define SIO_GPIO_OE_MSB _u(31) 384 #define SIO_GPIO_OE_LSB _u(0) 385 #define SIO_GPIO_OE_ACCESS "RW" 386 // ============================================================================= 387 // Register : SIO_GPIO_HI_OE 388 // Description : Output enable value for GPIO32...47, QSPI IOs and USB pins. 389 // 390 // Write output enable (1/0 -> output/input). Reading back gives 391 // the last value written. If core 0 and core 1 both write to 392 // GPIO_HI_OE simultaneously (or to a SET/CLR/XOR alias), the 393 // result is as though the write from core 0 took place first, and 394 // the write from core 1 was then applied to that intermediate 395 // result. 396 // 397 // In the Non-secure SIO, Secure-only GPIOs (as per ACCESSCTRL) 398 // ignore writes, and their output status reads back as zero. This 399 // is also true for SET/CLR/XOR aliases of this register. 400 #define SIO_GPIO_HI_OE_OFFSET _u(0x00000034) 401 #define SIO_GPIO_HI_OE_BITS _u(0xff00ffff) 402 #define SIO_GPIO_HI_OE_RESET _u(0x00000000) 403 // ----------------------------------------------------------------------------- 404 // Field : SIO_GPIO_HI_OE_QSPI_SD 405 // Description : Output enable value for QSPI SD0 (MOSI), SD1 (MISO), SD2 and 406 // SD3 pins 407 #define SIO_GPIO_HI_OE_QSPI_SD_RESET _u(0x0) 408 #define SIO_GPIO_HI_OE_QSPI_SD_BITS _u(0xf0000000) 409 #define SIO_GPIO_HI_OE_QSPI_SD_MSB _u(31) 410 #define SIO_GPIO_HI_OE_QSPI_SD_LSB _u(28) 411 #define SIO_GPIO_HI_OE_QSPI_SD_ACCESS "RW" 412 // ----------------------------------------------------------------------------- 413 // Field : SIO_GPIO_HI_OE_QSPI_CSN 414 // Description : Output enable value for QSPI CSn pin 415 #define SIO_GPIO_HI_OE_QSPI_CSN_RESET _u(0x0) 416 #define SIO_GPIO_HI_OE_QSPI_CSN_BITS _u(0x08000000) 417 #define SIO_GPIO_HI_OE_QSPI_CSN_MSB _u(27) 418 #define SIO_GPIO_HI_OE_QSPI_CSN_LSB _u(27) 419 #define SIO_GPIO_HI_OE_QSPI_CSN_ACCESS "RW" 420 // ----------------------------------------------------------------------------- 421 // Field : SIO_GPIO_HI_OE_QSPI_SCK 422 // Description : Output enable value for QSPI SCK pin 423 #define SIO_GPIO_HI_OE_QSPI_SCK_RESET _u(0x0) 424 #define SIO_GPIO_HI_OE_QSPI_SCK_BITS _u(0x04000000) 425 #define SIO_GPIO_HI_OE_QSPI_SCK_MSB _u(26) 426 #define SIO_GPIO_HI_OE_QSPI_SCK_LSB _u(26) 427 #define SIO_GPIO_HI_OE_QSPI_SCK_ACCESS "RW" 428 // ----------------------------------------------------------------------------- 429 // Field : SIO_GPIO_HI_OE_USB_DM 430 // Description : Output enable value for USB D- pin 431 #define SIO_GPIO_HI_OE_USB_DM_RESET _u(0x0) 432 #define SIO_GPIO_HI_OE_USB_DM_BITS _u(0x02000000) 433 #define SIO_GPIO_HI_OE_USB_DM_MSB _u(25) 434 #define SIO_GPIO_HI_OE_USB_DM_LSB _u(25) 435 #define SIO_GPIO_HI_OE_USB_DM_ACCESS "RW" 436 // ----------------------------------------------------------------------------- 437 // Field : SIO_GPIO_HI_OE_USB_DP 438 // Description : Output enable value for USB D+ pin 439 #define SIO_GPIO_HI_OE_USB_DP_RESET _u(0x0) 440 #define SIO_GPIO_HI_OE_USB_DP_BITS _u(0x01000000) 441 #define SIO_GPIO_HI_OE_USB_DP_MSB _u(24) 442 #define SIO_GPIO_HI_OE_USB_DP_LSB _u(24) 443 #define SIO_GPIO_HI_OE_USB_DP_ACCESS "RW" 444 // ----------------------------------------------------------------------------- 445 // Field : SIO_GPIO_HI_OE_GPIO 446 // Description : Output enable value for GPIO32...47 447 #define SIO_GPIO_HI_OE_GPIO_RESET _u(0x0000) 448 #define SIO_GPIO_HI_OE_GPIO_BITS _u(0x0000ffff) 449 #define SIO_GPIO_HI_OE_GPIO_MSB _u(15) 450 #define SIO_GPIO_HI_OE_GPIO_LSB _u(0) 451 #define SIO_GPIO_HI_OE_GPIO_ACCESS "RW" 452 // ============================================================================= 453 // Register : SIO_GPIO_OE_SET 454 // Description : GPIO0...31 output enable set 455 // Perform an atomic bit-set on GPIO_OE, i.e. `GPIO_OE |= wdata` 456 #define SIO_GPIO_OE_SET_OFFSET _u(0x00000038) 457 #define SIO_GPIO_OE_SET_BITS _u(0xffffffff) 458 #define SIO_GPIO_OE_SET_RESET _u(0x00000000) 459 #define SIO_GPIO_OE_SET_MSB _u(31) 460 #define SIO_GPIO_OE_SET_LSB _u(0) 461 #define SIO_GPIO_OE_SET_ACCESS "WO" 462 // ============================================================================= 463 // Register : SIO_GPIO_HI_OE_SET 464 // Description : Output enable set for GPIO32...47, QSPI IOs and USB pins. 465 // Perform an atomic bit-set on GPIO_HI_OE, i.e. `GPIO_HI_OE |= 466 // wdata` 467 #define SIO_GPIO_HI_OE_SET_OFFSET _u(0x0000003c) 468 #define SIO_GPIO_HI_OE_SET_BITS _u(0xff00ffff) 469 #define SIO_GPIO_HI_OE_SET_RESET _u(0x00000000) 470 // ----------------------------------------------------------------------------- 471 // Field : SIO_GPIO_HI_OE_SET_QSPI_SD 472 #define SIO_GPIO_HI_OE_SET_QSPI_SD_RESET _u(0x0) 473 #define SIO_GPIO_HI_OE_SET_QSPI_SD_BITS _u(0xf0000000) 474 #define SIO_GPIO_HI_OE_SET_QSPI_SD_MSB _u(31) 475 #define SIO_GPIO_HI_OE_SET_QSPI_SD_LSB _u(28) 476 #define SIO_GPIO_HI_OE_SET_QSPI_SD_ACCESS "WO" 477 // ----------------------------------------------------------------------------- 478 // Field : SIO_GPIO_HI_OE_SET_QSPI_CSN 479 #define SIO_GPIO_HI_OE_SET_QSPI_CSN_RESET _u(0x0) 480 #define SIO_GPIO_HI_OE_SET_QSPI_CSN_BITS _u(0x08000000) 481 #define SIO_GPIO_HI_OE_SET_QSPI_CSN_MSB _u(27) 482 #define SIO_GPIO_HI_OE_SET_QSPI_CSN_LSB _u(27) 483 #define SIO_GPIO_HI_OE_SET_QSPI_CSN_ACCESS "WO" 484 // ----------------------------------------------------------------------------- 485 // Field : SIO_GPIO_HI_OE_SET_QSPI_SCK 486 #define SIO_GPIO_HI_OE_SET_QSPI_SCK_RESET _u(0x0) 487 #define SIO_GPIO_HI_OE_SET_QSPI_SCK_BITS _u(0x04000000) 488 #define SIO_GPIO_HI_OE_SET_QSPI_SCK_MSB _u(26) 489 #define SIO_GPIO_HI_OE_SET_QSPI_SCK_LSB _u(26) 490 #define SIO_GPIO_HI_OE_SET_QSPI_SCK_ACCESS "WO" 491 // ----------------------------------------------------------------------------- 492 // Field : SIO_GPIO_HI_OE_SET_USB_DM 493 #define SIO_GPIO_HI_OE_SET_USB_DM_RESET _u(0x0) 494 #define SIO_GPIO_HI_OE_SET_USB_DM_BITS _u(0x02000000) 495 #define SIO_GPIO_HI_OE_SET_USB_DM_MSB _u(25) 496 #define SIO_GPIO_HI_OE_SET_USB_DM_LSB _u(25) 497 #define SIO_GPIO_HI_OE_SET_USB_DM_ACCESS "WO" 498 // ----------------------------------------------------------------------------- 499 // Field : SIO_GPIO_HI_OE_SET_USB_DP 500 #define SIO_GPIO_HI_OE_SET_USB_DP_RESET _u(0x0) 501 #define SIO_GPIO_HI_OE_SET_USB_DP_BITS _u(0x01000000) 502 #define SIO_GPIO_HI_OE_SET_USB_DP_MSB _u(24) 503 #define SIO_GPIO_HI_OE_SET_USB_DP_LSB _u(24) 504 #define SIO_GPIO_HI_OE_SET_USB_DP_ACCESS "WO" 505 // ----------------------------------------------------------------------------- 506 // Field : SIO_GPIO_HI_OE_SET_GPIO 507 #define SIO_GPIO_HI_OE_SET_GPIO_RESET _u(0x0000) 508 #define SIO_GPIO_HI_OE_SET_GPIO_BITS _u(0x0000ffff) 509 #define SIO_GPIO_HI_OE_SET_GPIO_MSB _u(15) 510 #define SIO_GPIO_HI_OE_SET_GPIO_LSB _u(0) 511 #define SIO_GPIO_HI_OE_SET_GPIO_ACCESS "WO" 512 // ============================================================================= 513 // Register : SIO_GPIO_OE_CLR 514 // Description : GPIO0...31 output enable clear 515 // Perform an atomic bit-clear on GPIO_OE, i.e. `GPIO_OE &= 516 // ~wdata` 517 #define SIO_GPIO_OE_CLR_OFFSET _u(0x00000040) 518 #define SIO_GPIO_OE_CLR_BITS _u(0xffffffff) 519 #define SIO_GPIO_OE_CLR_RESET _u(0x00000000) 520 #define SIO_GPIO_OE_CLR_MSB _u(31) 521 #define SIO_GPIO_OE_CLR_LSB _u(0) 522 #define SIO_GPIO_OE_CLR_ACCESS "WO" 523 // ============================================================================= 524 // Register : SIO_GPIO_HI_OE_CLR 525 // Description : Output enable clear for GPIO32...47, QSPI IOs and USB pins. 526 // Perform an atomic bit-clear on GPIO_HI_OE, i.e. `GPIO_HI_OE &= 527 // ~wdata` 528 #define SIO_GPIO_HI_OE_CLR_OFFSET _u(0x00000044) 529 #define SIO_GPIO_HI_OE_CLR_BITS _u(0xff00ffff) 530 #define SIO_GPIO_HI_OE_CLR_RESET _u(0x00000000) 531 // ----------------------------------------------------------------------------- 532 // Field : SIO_GPIO_HI_OE_CLR_QSPI_SD 533 #define SIO_GPIO_HI_OE_CLR_QSPI_SD_RESET _u(0x0) 534 #define SIO_GPIO_HI_OE_CLR_QSPI_SD_BITS _u(0xf0000000) 535 #define SIO_GPIO_HI_OE_CLR_QSPI_SD_MSB _u(31) 536 #define SIO_GPIO_HI_OE_CLR_QSPI_SD_LSB _u(28) 537 #define SIO_GPIO_HI_OE_CLR_QSPI_SD_ACCESS "WO" 538 // ----------------------------------------------------------------------------- 539 // Field : SIO_GPIO_HI_OE_CLR_QSPI_CSN 540 #define SIO_GPIO_HI_OE_CLR_QSPI_CSN_RESET _u(0x0) 541 #define SIO_GPIO_HI_OE_CLR_QSPI_CSN_BITS _u(0x08000000) 542 #define SIO_GPIO_HI_OE_CLR_QSPI_CSN_MSB _u(27) 543 #define SIO_GPIO_HI_OE_CLR_QSPI_CSN_LSB _u(27) 544 #define SIO_GPIO_HI_OE_CLR_QSPI_CSN_ACCESS "WO" 545 // ----------------------------------------------------------------------------- 546 // Field : SIO_GPIO_HI_OE_CLR_QSPI_SCK 547 #define SIO_GPIO_HI_OE_CLR_QSPI_SCK_RESET _u(0x0) 548 #define SIO_GPIO_HI_OE_CLR_QSPI_SCK_BITS _u(0x04000000) 549 #define SIO_GPIO_HI_OE_CLR_QSPI_SCK_MSB _u(26) 550 #define SIO_GPIO_HI_OE_CLR_QSPI_SCK_LSB _u(26) 551 #define SIO_GPIO_HI_OE_CLR_QSPI_SCK_ACCESS "WO" 552 // ----------------------------------------------------------------------------- 553 // Field : SIO_GPIO_HI_OE_CLR_USB_DM 554 #define SIO_GPIO_HI_OE_CLR_USB_DM_RESET _u(0x0) 555 #define SIO_GPIO_HI_OE_CLR_USB_DM_BITS _u(0x02000000) 556 #define SIO_GPIO_HI_OE_CLR_USB_DM_MSB _u(25) 557 #define SIO_GPIO_HI_OE_CLR_USB_DM_LSB _u(25) 558 #define SIO_GPIO_HI_OE_CLR_USB_DM_ACCESS "WO" 559 // ----------------------------------------------------------------------------- 560 // Field : SIO_GPIO_HI_OE_CLR_USB_DP 561 #define SIO_GPIO_HI_OE_CLR_USB_DP_RESET _u(0x0) 562 #define SIO_GPIO_HI_OE_CLR_USB_DP_BITS _u(0x01000000) 563 #define SIO_GPIO_HI_OE_CLR_USB_DP_MSB _u(24) 564 #define SIO_GPIO_HI_OE_CLR_USB_DP_LSB _u(24) 565 #define SIO_GPIO_HI_OE_CLR_USB_DP_ACCESS "WO" 566 // ----------------------------------------------------------------------------- 567 // Field : SIO_GPIO_HI_OE_CLR_GPIO 568 #define SIO_GPIO_HI_OE_CLR_GPIO_RESET _u(0x0000) 569 #define SIO_GPIO_HI_OE_CLR_GPIO_BITS _u(0x0000ffff) 570 #define SIO_GPIO_HI_OE_CLR_GPIO_MSB _u(15) 571 #define SIO_GPIO_HI_OE_CLR_GPIO_LSB _u(0) 572 #define SIO_GPIO_HI_OE_CLR_GPIO_ACCESS "WO" 573 // ============================================================================= 574 // Register : SIO_GPIO_OE_XOR 575 // Description : GPIO0...31 output enable XOR 576 // Perform an atomic bitwise XOR on GPIO_OE, i.e. `GPIO_OE ^= 577 // wdata` 578 #define SIO_GPIO_OE_XOR_OFFSET _u(0x00000048) 579 #define SIO_GPIO_OE_XOR_BITS _u(0xffffffff) 580 #define SIO_GPIO_OE_XOR_RESET _u(0x00000000) 581 #define SIO_GPIO_OE_XOR_MSB _u(31) 582 #define SIO_GPIO_OE_XOR_LSB _u(0) 583 #define SIO_GPIO_OE_XOR_ACCESS "WO" 584 // ============================================================================= 585 // Register : SIO_GPIO_HI_OE_XOR 586 // Description : Output enable XOR for GPIO32...47, QSPI IOs and USB pins. 587 // Perform an atomic bitwise XOR on GPIO_HI_OE, i.e. `GPIO_HI_OE 588 // ^= wdata` 589 #define SIO_GPIO_HI_OE_XOR_OFFSET _u(0x0000004c) 590 #define SIO_GPIO_HI_OE_XOR_BITS _u(0xff00ffff) 591 #define SIO_GPIO_HI_OE_XOR_RESET _u(0x00000000) 592 // ----------------------------------------------------------------------------- 593 // Field : SIO_GPIO_HI_OE_XOR_QSPI_SD 594 #define SIO_GPIO_HI_OE_XOR_QSPI_SD_RESET _u(0x0) 595 #define SIO_GPIO_HI_OE_XOR_QSPI_SD_BITS _u(0xf0000000) 596 #define SIO_GPIO_HI_OE_XOR_QSPI_SD_MSB _u(31) 597 #define SIO_GPIO_HI_OE_XOR_QSPI_SD_LSB _u(28) 598 #define SIO_GPIO_HI_OE_XOR_QSPI_SD_ACCESS "WO" 599 // ----------------------------------------------------------------------------- 600 // Field : SIO_GPIO_HI_OE_XOR_QSPI_CSN 601 #define SIO_GPIO_HI_OE_XOR_QSPI_CSN_RESET _u(0x0) 602 #define SIO_GPIO_HI_OE_XOR_QSPI_CSN_BITS _u(0x08000000) 603 #define SIO_GPIO_HI_OE_XOR_QSPI_CSN_MSB _u(27) 604 #define SIO_GPIO_HI_OE_XOR_QSPI_CSN_LSB _u(27) 605 #define SIO_GPIO_HI_OE_XOR_QSPI_CSN_ACCESS "WO" 606 // ----------------------------------------------------------------------------- 607 // Field : SIO_GPIO_HI_OE_XOR_QSPI_SCK 608 #define SIO_GPIO_HI_OE_XOR_QSPI_SCK_RESET _u(0x0) 609 #define SIO_GPIO_HI_OE_XOR_QSPI_SCK_BITS _u(0x04000000) 610 #define SIO_GPIO_HI_OE_XOR_QSPI_SCK_MSB _u(26) 611 #define SIO_GPIO_HI_OE_XOR_QSPI_SCK_LSB _u(26) 612 #define SIO_GPIO_HI_OE_XOR_QSPI_SCK_ACCESS "WO" 613 // ----------------------------------------------------------------------------- 614 // Field : SIO_GPIO_HI_OE_XOR_USB_DM 615 #define SIO_GPIO_HI_OE_XOR_USB_DM_RESET _u(0x0) 616 #define SIO_GPIO_HI_OE_XOR_USB_DM_BITS _u(0x02000000) 617 #define SIO_GPIO_HI_OE_XOR_USB_DM_MSB _u(25) 618 #define SIO_GPIO_HI_OE_XOR_USB_DM_LSB _u(25) 619 #define SIO_GPIO_HI_OE_XOR_USB_DM_ACCESS "WO" 620 // ----------------------------------------------------------------------------- 621 // Field : SIO_GPIO_HI_OE_XOR_USB_DP 622 #define SIO_GPIO_HI_OE_XOR_USB_DP_RESET _u(0x0) 623 #define SIO_GPIO_HI_OE_XOR_USB_DP_BITS _u(0x01000000) 624 #define SIO_GPIO_HI_OE_XOR_USB_DP_MSB _u(24) 625 #define SIO_GPIO_HI_OE_XOR_USB_DP_LSB _u(24) 626 #define SIO_GPIO_HI_OE_XOR_USB_DP_ACCESS "WO" 627 // ----------------------------------------------------------------------------- 628 // Field : SIO_GPIO_HI_OE_XOR_GPIO 629 #define SIO_GPIO_HI_OE_XOR_GPIO_RESET _u(0x0000) 630 #define SIO_GPIO_HI_OE_XOR_GPIO_BITS _u(0x0000ffff) 631 #define SIO_GPIO_HI_OE_XOR_GPIO_MSB _u(15) 632 #define SIO_GPIO_HI_OE_XOR_GPIO_LSB _u(0) 633 #define SIO_GPIO_HI_OE_XOR_GPIO_ACCESS "WO" 634 // ============================================================================= 635 // Register : SIO_FIFO_ST 636 // Description : Status register for inter-core FIFOs (mailboxes). 637 // There is one FIFO in the core 0 -> core 1 direction, and one 638 // core 1 -> core 0. Both are 32 bits wide and 8 words deep. 639 // Core 0 can see the read side of the 1->0 FIFO (RX), and the 640 // write side of 0->1 FIFO (TX). 641 // Core 1 can see the read side of the 0->1 FIFO (RX), and the 642 // write side of 1->0 FIFO (TX). 643 // The SIO IRQ for each core is the logical OR of the VLD, WOF and 644 // ROE fields of its FIFO_ST register. 645 #define SIO_FIFO_ST_OFFSET _u(0x00000050) 646 #define SIO_FIFO_ST_BITS _u(0x0000000f) 647 #define SIO_FIFO_ST_RESET _u(0x00000002) 648 // ----------------------------------------------------------------------------- 649 // Field : SIO_FIFO_ST_ROE 650 // Description : Sticky flag indicating the RX FIFO was read when empty. This 651 // read was ignored by the FIFO. 652 #define SIO_FIFO_ST_ROE_RESET _u(0x0) 653 #define SIO_FIFO_ST_ROE_BITS _u(0x00000008) 654 #define SIO_FIFO_ST_ROE_MSB _u(3) 655 #define SIO_FIFO_ST_ROE_LSB _u(3) 656 #define SIO_FIFO_ST_ROE_ACCESS "WC" 657 // ----------------------------------------------------------------------------- 658 // Field : SIO_FIFO_ST_WOF 659 // Description : Sticky flag indicating the TX FIFO was written when full. This 660 // write was ignored by the FIFO. 661 #define SIO_FIFO_ST_WOF_RESET _u(0x0) 662 #define SIO_FIFO_ST_WOF_BITS _u(0x00000004) 663 #define SIO_FIFO_ST_WOF_MSB _u(2) 664 #define SIO_FIFO_ST_WOF_LSB _u(2) 665 #define SIO_FIFO_ST_WOF_ACCESS "WC" 666 // ----------------------------------------------------------------------------- 667 // Field : SIO_FIFO_ST_RDY 668 // Description : Value is 1 if this core's TX FIFO is not full (i.e. if FIFO_WR 669 // is ready for more data) 670 #define SIO_FIFO_ST_RDY_RESET _u(0x1) 671 #define SIO_FIFO_ST_RDY_BITS _u(0x00000002) 672 #define SIO_FIFO_ST_RDY_MSB _u(1) 673 #define SIO_FIFO_ST_RDY_LSB _u(1) 674 #define SIO_FIFO_ST_RDY_ACCESS "RO" 675 // ----------------------------------------------------------------------------- 676 // Field : SIO_FIFO_ST_VLD 677 // Description : Value is 1 if this core's RX FIFO is not empty (i.e. if FIFO_RD 678 // is valid) 679 #define SIO_FIFO_ST_VLD_RESET _u(0x0) 680 #define SIO_FIFO_ST_VLD_BITS _u(0x00000001) 681 #define SIO_FIFO_ST_VLD_MSB _u(0) 682 #define SIO_FIFO_ST_VLD_LSB _u(0) 683 #define SIO_FIFO_ST_VLD_ACCESS "RO" 684 // ============================================================================= 685 // Register : SIO_FIFO_WR 686 // Description : Write access to this core's TX FIFO 687 #define SIO_FIFO_WR_OFFSET _u(0x00000054) 688 #define SIO_FIFO_WR_BITS _u(0xffffffff) 689 #define SIO_FIFO_WR_RESET _u(0x00000000) 690 #define SIO_FIFO_WR_MSB _u(31) 691 #define SIO_FIFO_WR_LSB _u(0) 692 #define SIO_FIFO_WR_ACCESS "WF" 693 // ============================================================================= 694 // Register : SIO_FIFO_RD 695 // Description : Read access to this core's RX FIFO 696 #define SIO_FIFO_RD_OFFSET _u(0x00000058) 697 #define SIO_FIFO_RD_BITS _u(0xffffffff) 698 #define SIO_FIFO_RD_RESET "-" 699 #define SIO_FIFO_RD_MSB _u(31) 700 #define SIO_FIFO_RD_LSB _u(0) 701 #define SIO_FIFO_RD_ACCESS "RF" 702 // ============================================================================= 703 // Register : SIO_SPINLOCK_ST 704 // Description : Spinlock state 705 // A bitmap containing the state of all 32 spinlocks (1=locked). 706 // Mainly intended for debugging. 707 #define SIO_SPINLOCK_ST_OFFSET _u(0x0000005c) 708 #define SIO_SPINLOCK_ST_BITS _u(0xffffffff) 709 #define SIO_SPINLOCK_ST_RESET _u(0x00000000) 710 #define SIO_SPINLOCK_ST_MSB _u(31) 711 #define SIO_SPINLOCK_ST_LSB _u(0) 712 #define SIO_SPINLOCK_ST_ACCESS "RO" 713 // ============================================================================= 714 // Register : SIO_INTERP0_ACCUM0 715 // Description : Read/write access to accumulator 0 716 #define SIO_INTERP0_ACCUM0_OFFSET _u(0x00000080) 717 #define SIO_INTERP0_ACCUM0_BITS _u(0xffffffff) 718 #define SIO_INTERP0_ACCUM0_RESET _u(0x00000000) 719 #define SIO_INTERP0_ACCUM0_MSB _u(31) 720 #define SIO_INTERP0_ACCUM0_LSB _u(0) 721 #define SIO_INTERP0_ACCUM0_ACCESS "RW" 722 // ============================================================================= 723 // Register : SIO_INTERP0_ACCUM1 724 // Description : Read/write access to accumulator 1 725 #define SIO_INTERP0_ACCUM1_OFFSET _u(0x00000084) 726 #define SIO_INTERP0_ACCUM1_BITS _u(0xffffffff) 727 #define SIO_INTERP0_ACCUM1_RESET _u(0x00000000) 728 #define SIO_INTERP0_ACCUM1_MSB _u(31) 729 #define SIO_INTERP0_ACCUM1_LSB _u(0) 730 #define SIO_INTERP0_ACCUM1_ACCESS "RW" 731 // ============================================================================= 732 // Register : SIO_INTERP0_BASE0 733 // Description : Read/write access to BASE0 register. 734 #define SIO_INTERP0_BASE0_OFFSET _u(0x00000088) 735 #define SIO_INTERP0_BASE0_BITS _u(0xffffffff) 736 #define SIO_INTERP0_BASE0_RESET _u(0x00000000) 737 #define SIO_INTERP0_BASE0_MSB _u(31) 738 #define SIO_INTERP0_BASE0_LSB _u(0) 739 #define SIO_INTERP0_BASE0_ACCESS "RW" 740 // ============================================================================= 741 // Register : SIO_INTERP0_BASE1 742 // Description : Read/write access to BASE1 register. 743 #define SIO_INTERP0_BASE1_OFFSET _u(0x0000008c) 744 #define SIO_INTERP0_BASE1_BITS _u(0xffffffff) 745 #define SIO_INTERP0_BASE1_RESET _u(0x00000000) 746 #define SIO_INTERP0_BASE1_MSB _u(31) 747 #define SIO_INTERP0_BASE1_LSB _u(0) 748 #define SIO_INTERP0_BASE1_ACCESS "RW" 749 // ============================================================================= 750 // Register : SIO_INTERP0_BASE2 751 // Description : Read/write access to BASE2 register. 752 #define SIO_INTERP0_BASE2_OFFSET _u(0x00000090) 753 #define SIO_INTERP0_BASE2_BITS _u(0xffffffff) 754 #define SIO_INTERP0_BASE2_RESET _u(0x00000000) 755 #define SIO_INTERP0_BASE2_MSB _u(31) 756 #define SIO_INTERP0_BASE2_LSB _u(0) 757 #define SIO_INTERP0_BASE2_ACCESS "RW" 758 // ============================================================================= 759 // Register : SIO_INTERP0_POP_LANE0 760 // Description : Read LANE0 result, and simultaneously write lane results to 761 // both accumulators (POP). 762 #define SIO_INTERP0_POP_LANE0_OFFSET _u(0x00000094) 763 #define SIO_INTERP0_POP_LANE0_BITS _u(0xffffffff) 764 #define SIO_INTERP0_POP_LANE0_RESET _u(0x00000000) 765 #define SIO_INTERP0_POP_LANE0_MSB _u(31) 766 #define SIO_INTERP0_POP_LANE0_LSB _u(0) 767 #define SIO_INTERP0_POP_LANE0_ACCESS "RO" 768 // ============================================================================= 769 // Register : SIO_INTERP0_POP_LANE1 770 // Description : Read LANE1 result, and simultaneously write lane results to 771 // both accumulators (POP). 772 #define SIO_INTERP0_POP_LANE1_OFFSET _u(0x00000098) 773 #define SIO_INTERP0_POP_LANE1_BITS _u(0xffffffff) 774 #define SIO_INTERP0_POP_LANE1_RESET _u(0x00000000) 775 #define SIO_INTERP0_POP_LANE1_MSB _u(31) 776 #define SIO_INTERP0_POP_LANE1_LSB _u(0) 777 #define SIO_INTERP0_POP_LANE1_ACCESS "RO" 778 // ============================================================================= 779 // Register : SIO_INTERP0_POP_FULL 780 // Description : Read FULL result, and simultaneously write lane results to both 781 // accumulators (POP). 782 #define SIO_INTERP0_POP_FULL_OFFSET _u(0x0000009c) 783 #define SIO_INTERP0_POP_FULL_BITS _u(0xffffffff) 784 #define SIO_INTERP0_POP_FULL_RESET _u(0x00000000) 785 #define SIO_INTERP0_POP_FULL_MSB _u(31) 786 #define SIO_INTERP0_POP_FULL_LSB _u(0) 787 #define SIO_INTERP0_POP_FULL_ACCESS "RO" 788 // ============================================================================= 789 // Register : SIO_INTERP0_PEEK_LANE0 790 // Description : Read LANE0 result, without altering any internal state (PEEK). 791 #define SIO_INTERP0_PEEK_LANE0_OFFSET _u(0x000000a0) 792 #define SIO_INTERP0_PEEK_LANE0_BITS _u(0xffffffff) 793 #define SIO_INTERP0_PEEK_LANE0_RESET _u(0x00000000) 794 #define SIO_INTERP0_PEEK_LANE0_MSB _u(31) 795 #define SIO_INTERP0_PEEK_LANE0_LSB _u(0) 796 #define SIO_INTERP0_PEEK_LANE0_ACCESS "RO" 797 // ============================================================================= 798 // Register : SIO_INTERP0_PEEK_LANE1 799 // Description : Read LANE1 result, without altering any internal state (PEEK). 800 #define SIO_INTERP0_PEEK_LANE1_OFFSET _u(0x000000a4) 801 #define SIO_INTERP0_PEEK_LANE1_BITS _u(0xffffffff) 802 #define SIO_INTERP0_PEEK_LANE1_RESET _u(0x00000000) 803 #define SIO_INTERP0_PEEK_LANE1_MSB _u(31) 804 #define SIO_INTERP0_PEEK_LANE1_LSB _u(0) 805 #define SIO_INTERP0_PEEK_LANE1_ACCESS "RO" 806 // ============================================================================= 807 // Register : SIO_INTERP0_PEEK_FULL 808 // Description : Read FULL result, without altering any internal state (PEEK). 809 #define SIO_INTERP0_PEEK_FULL_OFFSET _u(0x000000a8) 810 #define SIO_INTERP0_PEEK_FULL_BITS _u(0xffffffff) 811 #define SIO_INTERP0_PEEK_FULL_RESET _u(0x00000000) 812 #define SIO_INTERP0_PEEK_FULL_MSB _u(31) 813 #define SIO_INTERP0_PEEK_FULL_LSB _u(0) 814 #define SIO_INTERP0_PEEK_FULL_ACCESS "RO" 815 // ============================================================================= 816 // Register : SIO_INTERP0_CTRL_LANE0 817 // Description : Control register for lane 0 818 #define SIO_INTERP0_CTRL_LANE0_OFFSET _u(0x000000ac) 819 #define SIO_INTERP0_CTRL_LANE0_BITS _u(0x03bfffff) 820 #define SIO_INTERP0_CTRL_LANE0_RESET _u(0x00000000) 821 // ----------------------------------------------------------------------------- 822 // Field : SIO_INTERP0_CTRL_LANE0_OVERF 823 // Description : Set if either OVERF0 or OVERF1 is set. 824 #define SIO_INTERP0_CTRL_LANE0_OVERF_RESET _u(0x0) 825 #define SIO_INTERP0_CTRL_LANE0_OVERF_BITS _u(0x02000000) 826 #define SIO_INTERP0_CTRL_LANE0_OVERF_MSB _u(25) 827 #define SIO_INTERP0_CTRL_LANE0_OVERF_LSB _u(25) 828 #define SIO_INTERP0_CTRL_LANE0_OVERF_ACCESS "RO" 829 // ----------------------------------------------------------------------------- 830 // Field : SIO_INTERP0_CTRL_LANE0_OVERF1 831 // Description : Indicates if any masked-off MSBs in ACCUM1 are set. 832 #define SIO_INTERP0_CTRL_LANE0_OVERF1_RESET _u(0x0) 833 #define SIO_INTERP0_CTRL_LANE0_OVERF1_BITS _u(0x01000000) 834 #define SIO_INTERP0_CTRL_LANE0_OVERF1_MSB _u(24) 835 #define SIO_INTERP0_CTRL_LANE0_OVERF1_LSB _u(24) 836 #define SIO_INTERP0_CTRL_LANE0_OVERF1_ACCESS "RO" 837 // ----------------------------------------------------------------------------- 838 // Field : SIO_INTERP0_CTRL_LANE0_OVERF0 839 // Description : Indicates if any masked-off MSBs in ACCUM0 are set. 840 #define SIO_INTERP0_CTRL_LANE0_OVERF0_RESET _u(0x0) 841 #define SIO_INTERP0_CTRL_LANE0_OVERF0_BITS _u(0x00800000) 842 #define SIO_INTERP0_CTRL_LANE0_OVERF0_MSB _u(23) 843 #define SIO_INTERP0_CTRL_LANE0_OVERF0_LSB _u(23) 844 #define SIO_INTERP0_CTRL_LANE0_OVERF0_ACCESS "RO" 845 // ----------------------------------------------------------------------------- 846 // Field : SIO_INTERP0_CTRL_LANE0_BLEND 847 // Description : Only present on INTERP0 on each core. If BLEND mode is enabled: 848 // - LANE1 result is a linear interpolation between BASE0 and 849 // BASE1, controlled 850 // by the 8 LSBs of lane 1 shift and mask value (a fractional 851 // number between 852 // 0 and 255/256ths) 853 // - LANE0 result does not have BASE0 added (yields only the 8 854 // LSBs of lane 1 shift+mask value) 855 // - FULL result does not have lane 1 shift+mask value added 856 // (BASE2 + lane 0 shift+mask) 857 // LANE1 SIGNED flag controls whether the interpolation is signed 858 // or unsigned. 859 #define SIO_INTERP0_CTRL_LANE0_BLEND_RESET _u(0x0) 860 #define SIO_INTERP0_CTRL_LANE0_BLEND_BITS _u(0x00200000) 861 #define SIO_INTERP0_CTRL_LANE0_BLEND_MSB _u(21) 862 #define SIO_INTERP0_CTRL_LANE0_BLEND_LSB _u(21) 863 #define SIO_INTERP0_CTRL_LANE0_BLEND_ACCESS "RW" 864 // ----------------------------------------------------------------------------- 865 // Field : SIO_INTERP0_CTRL_LANE0_FORCE_MSB 866 // Description : ORed into bits 29:28 of the lane result presented to the 867 // processor on the bus. 868 // No effect on the internal 32-bit datapath. Handy for using a 869 // lane to generate sequence 870 // of pointers into flash or SRAM. 871 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_RESET _u(0x0) 872 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_BITS _u(0x00180000) 873 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_MSB _u(20) 874 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_LSB _u(19) 875 #define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_ACCESS "RW" 876 // ----------------------------------------------------------------------------- 877 // Field : SIO_INTERP0_CTRL_LANE0_ADD_RAW 878 // Description : If 1, mask + shift is bypassed for LANE0 result. This does not 879 // affect FULL result. 880 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_RESET _u(0x0) 881 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_BITS _u(0x00040000) 882 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_MSB _u(18) 883 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_LSB _u(18) 884 #define SIO_INTERP0_CTRL_LANE0_ADD_RAW_ACCESS "RW" 885 // ----------------------------------------------------------------------------- 886 // Field : SIO_INTERP0_CTRL_LANE0_CROSS_RESULT 887 // Description : If 1, feed the opposite lane's result into this lane's 888 // accumulator on POP. 889 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_RESET _u(0x0) 890 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_BITS _u(0x00020000) 891 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_MSB _u(17) 892 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_LSB _u(17) 893 #define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_ACCESS "RW" 894 // ----------------------------------------------------------------------------- 895 // Field : SIO_INTERP0_CTRL_LANE0_CROSS_INPUT 896 // Description : If 1, feed the opposite lane's accumulator into this lane's 897 // shift + mask hardware. 898 // Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is 899 // before the shift+mask bypass) 900 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_RESET _u(0x0) 901 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_BITS _u(0x00010000) 902 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_MSB _u(16) 903 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_LSB _u(16) 904 #define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_ACCESS "RW" 905 // ----------------------------------------------------------------------------- 906 // Field : SIO_INTERP0_CTRL_LANE0_SIGNED 907 // Description : If SIGNED is set, the shifted and masked accumulator value is 908 // sign-extended to 32 bits 909 // before adding to BASE0, and LANE0 PEEK/POP appear extended to 910 // 32 bits when read by processor. 911 #define SIO_INTERP0_CTRL_LANE0_SIGNED_RESET _u(0x0) 912 #define SIO_INTERP0_CTRL_LANE0_SIGNED_BITS _u(0x00008000) 913 #define SIO_INTERP0_CTRL_LANE0_SIGNED_MSB _u(15) 914 #define SIO_INTERP0_CTRL_LANE0_SIGNED_LSB _u(15) 915 #define SIO_INTERP0_CTRL_LANE0_SIGNED_ACCESS "RW" 916 // ----------------------------------------------------------------------------- 917 // Field : SIO_INTERP0_CTRL_LANE0_MASK_MSB 918 // Description : The most-significant bit allowed to pass by the mask 919 // (inclusive) 920 // Setting MSB < LSB may cause chip to turn inside-out 921 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_RESET _u(0x00) 922 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_BITS _u(0x00007c00) 923 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_MSB _u(14) 924 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_LSB _u(10) 925 #define SIO_INTERP0_CTRL_LANE0_MASK_MSB_ACCESS "RW" 926 // ----------------------------------------------------------------------------- 927 // Field : SIO_INTERP0_CTRL_LANE0_MASK_LSB 928 // Description : The least-significant bit allowed to pass by the mask 929 // (inclusive) 930 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_RESET _u(0x00) 931 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_BITS _u(0x000003e0) 932 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_MSB _u(9) 933 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_LSB _u(5) 934 #define SIO_INTERP0_CTRL_LANE0_MASK_LSB_ACCESS "RW" 935 // ----------------------------------------------------------------------------- 936 // Field : SIO_INTERP0_CTRL_LANE0_SHIFT 937 // Description : Right-rotate applied to accumulator before masking. By 938 // appropriately configuring the masks, left and right shifts can 939 // be synthesised. 940 #define SIO_INTERP0_CTRL_LANE0_SHIFT_RESET _u(0x00) 941 #define SIO_INTERP0_CTRL_LANE0_SHIFT_BITS _u(0x0000001f) 942 #define SIO_INTERP0_CTRL_LANE0_SHIFT_MSB _u(4) 943 #define SIO_INTERP0_CTRL_LANE0_SHIFT_LSB _u(0) 944 #define SIO_INTERP0_CTRL_LANE0_SHIFT_ACCESS "RW" 945 // ============================================================================= 946 // Register : SIO_INTERP0_CTRL_LANE1 947 // Description : Control register for lane 1 948 #define SIO_INTERP0_CTRL_LANE1_OFFSET _u(0x000000b0) 949 #define SIO_INTERP0_CTRL_LANE1_BITS _u(0x001fffff) 950 #define SIO_INTERP0_CTRL_LANE1_RESET _u(0x00000000) 951 // ----------------------------------------------------------------------------- 952 // Field : SIO_INTERP0_CTRL_LANE1_FORCE_MSB 953 // Description : ORed into bits 29:28 of the lane result presented to the 954 // processor on the bus. 955 // No effect on the internal 32-bit datapath. Handy for using a 956 // lane to generate sequence 957 // of pointers into flash or SRAM. 958 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_RESET _u(0x0) 959 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_BITS _u(0x00180000) 960 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_MSB _u(20) 961 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_LSB _u(19) 962 #define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_ACCESS "RW" 963 // ----------------------------------------------------------------------------- 964 // Field : SIO_INTERP0_CTRL_LANE1_ADD_RAW 965 // Description : If 1, mask + shift is bypassed for LANE1 result. This does not 966 // affect FULL result. 967 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_RESET _u(0x0) 968 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_BITS _u(0x00040000) 969 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_MSB _u(18) 970 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_LSB _u(18) 971 #define SIO_INTERP0_CTRL_LANE1_ADD_RAW_ACCESS "RW" 972 // ----------------------------------------------------------------------------- 973 // Field : SIO_INTERP0_CTRL_LANE1_CROSS_RESULT 974 // Description : If 1, feed the opposite lane's result into this lane's 975 // accumulator on POP. 976 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_RESET _u(0x0) 977 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_BITS _u(0x00020000) 978 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_MSB _u(17) 979 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_LSB _u(17) 980 #define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_ACCESS "RW" 981 // ----------------------------------------------------------------------------- 982 // Field : SIO_INTERP0_CTRL_LANE1_CROSS_INPUT 983 // Description : If 1, feed the opposite lane's accumulator into this lane's 984 // shift + mask hardware. 985 // Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is 986 // before the shift+mask bypass) 987 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_RESET _u(0x0) 988 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_BITS _u(0x00010000) 989 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_MSB _u(16) 990 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_LSB _u(16) 991 #define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_ACCESS "RW" 992 // ----------------------------------------------------------------------------- 993 // Field : SIO_INTERP0_CTRL_LANE1_SIGNED 994 // Description : If SIGNED is set, the shifted and masked accumulator value is 995 // sign-extended to 32 bits 996 // before adding to BASE1, and LANE1 PEEK/POP appear extended to 997 // 32 bits when read by processor. 998 #define SIO_INTERP0_CTRL_LANE1_SIGNED_RESET _u(0x0) 999 #define SIO_INTERP0_CTRL_LANE1_SIGNED_BITS _u(0x00008000) 1000 #define SIO_INTERP0_CTRL_LANE1_SIGNED_MSB _u(15) 1001 #define SIO_INTERP0_CTRL_LANE1_SIGNED_LSB _u(15) 1002 #define SIO_INTERP0_CTRL_LANE1_SIGNED_ACCESS "RW" 1003 // ----------------------------------------------------------------------------- 1004 // Field : SIO_INTERP0_CTRL_LANE1_MASK_MSB 1005 // Description : The most-significant bit allowed to pass by the mask 1006 // (inclusive) 1007 // Setting MSB < LSB may cause chip to turn inside-out 1008 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_RESET _u(0x00) 1009 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_BITS _u(0x00007c00) 1010 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_MSB _u(14) 1011 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_LSB _u(10) 1012 #define SIO_INTERP0_CTRL_LANE1_MASK_MSB_ACCESS "RW" 1013 // ----------------------------------------------------------------------------- 1014 // Field : SIO_INTERP0_CTRL_LANE1_MASK_LSB 1015 // Description : The least-significant bit allowed to pass by the mask 1016 // (inclusive) 1017 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_RESET _u(0x00) 1018 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_BITS _u(0x000003e0) 1019 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_MSB _u(9) 1020 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_LSB _u(5) 1021 #define SIO_INTERP0_CTRL_LANE1_MASK_LSB_ACCESS "RW" 1022 // ----------------------------------------------------------------------------- 1023 // Field : SIO_INTERP0_CTRL_LANE1_SHIFT 1024 // Description : Right-rotate applied to accumulator before masking. By 1025 // appropriately configuring the masks, left and right shifts can 1026 // be synthesised. 1027 #define SIO_INTERP0_CTRL_LANE1_SHIFT_RESET _u(0x00) 1028 #define SIO_INTERP0_CTRL_LANE1_SHIFT_BITS _u(0x0000001f) 1029 #define SIO_INTERP0_CTRL_LANE1_SHIFT_MSB _u(4) 1030 #define SIO_INTERP0_CTRL_LANE1_SHIFT_LSB _u(0) 1031 #define SIO_INTERP0_CTRL_LANE1_SHIFT_ACCESS "RW" 1032 // ============================================================================= 1033 // Register : SIO_INTERP0_ACCUM0_ADD 1034 // Description : Values written here are atomically added to ACCUM0 1035 // Reading yields lane 0's raw shift and mask value (BASE0 not 1036 // added). 1037 #define SIO_INTERP0_ACCUM0_ADD_OFFSET _u(0x000000b4) 1038 #define SIO_INTERP0_ACCUM0_ADD_BITS _u(0x00ffffff) 1039 #define SIO_INTERP0_ACCUM0_ADD_RESET _u(0x00000000) 1040 #define SIO_INTERP0_ACCUM0_ADD_MSB _u(23) 1041 #define SIO_INTERP0_ACCUM0_ADD_LSB _u(0) 1042 #define SIO_INTERP0_ACCUM0_ADD_ACCESS "RW" 1043 // ============================================================================= 1044 // Register : SIO_INTERP0_ACCUM1_ADD 1045 // Description : Values written here are atomically added to ACCUM1 1046 // Reading yields lane 1's raw shift and mask value (BASE1 not 1047 // added). 1048 #define SIO_INTERP0_ACCUM1_ADD_OFFSET _u(0x000000b8) 1049 #define SIO_INTERP0_ACCUM1_ADD_BITS _u(0x00ffffff) 1050 #define SIO_INTERP0_ACCUM1_ADD_RESET _u(0x00000000) 1051 #define SIO_INTERP0_ACCUM1_ADD_MSB _u(23) 1052 #define SIO_INTERP0_ACCUM1_ADD_LSB _u(0) 1053 #define SIO_INTERP0_ACCUM1_ADD_ACCESS "RW" 1054 // ============================================================================= 1055 // Register : SIO_INTERP0_BASE_1AND0 1056 // Description : On write, the lower 16 bits go to BASE0, upper bits to BASE1 1057 // simultaneously. 1058 // Each half is sign-extended to 32 bits if that lane's SIGNED 1059 // flag is set. 1060 #define SIO_INTERP0_BASE_1AND0_OFFSET _u(0x000000bc) 1061 #define SIO_INTERP0_BASE_1AND0_BITS _u(0xffffffff) 1062 #define SIO_INTERP0_BASE_1AND0_RESET _u(0x00000000) 1063 #define SIO_INTERP0_BASE_1AND0_MSB _u(31) 1064 #define SIO_INTERP0_BASE_1AND0_LSB _u(0) 1065 #define SIO_INTERP0_BASE_1AND0_ACCESS "WO" 1066 // ============================================================================= 1067 // Register : SIO_INTERP1_ACCUM0 1068 // Description : Read/write access to accumulator 0 1069 #define SIO_INTERP1_ACCUM0_OFFSET _u(0x000000c0) 1070 #define SIO_INTERP1_ACCUM0_BITS _u(0xffffffff) 1071 #define SIO_INTERP1_ACCUM0_RESET _u(0x00000000) 1072 #define SIO_INTERP1_ACCUM0_MSB _u(31) 1073 #define SIO_INTERP1_ACCUM0_LSB _u(0) 1074 #define SIO_INTERP1_ACCUM0_ACCESS "RW" 1075 // ============================================================================= 1076 // Register : SIO_INTERP1_ACCUM1 1077 // Description : Read/write access to accumulator 1 1078 #define SIO_INTERP1_ACCUM1_OFFSET _u(0x000000c4) 1079 #define SIO_INTERP1_ACCUM1_BITS _u(0xffffffff) 1080 #define SIO_INTERP1_ACCUM1_RESET _u(0x00000000) 1081 #define SIO_INTERP1_ACCUM1_MSB _u(31) 1082 #define SIO_INTERP1_ACCUM1_LSB _u(0) 1083 #define SIO_INTERP1_ACCUM1_ACCESS "RW" 1084 // ============================================================================= 1085 // Register : SIO_INTERP1_BASE0 1086 // Description : Read/write access to BASE0 register. 1087 #define SIO_INTERP1_BASE0_OFFSET _u(0x000000c8) 1088 #define SIO_INTERP1_BASE0_BITS _u(0xffffffff) 1089 #define SIO_INTERP1_BASE0_RESET _u(0x00000000) 1090 #define SIO_INTERP1_BASE0_MSB _u(31) 1091 #define SIO_INTERP1_BASE0_LSB _u(0) 1092 #define SIO_INTERP1_BASE0_ACCESS "RW" 1093 // ============================================================================= 1094 // Register : SIO_INTERP1_BASE1 1095 // Description : Read/write access to BASE1 register. 1096 #define SIO_INTERP1_BASE1_OFFSET _u(0x000000cc) 1097 #define SIO_INTERP1_BASE1_BITS _u(0xffffffff) 1098 #define SIO_INTERP1_BASE1_RESET _u(0x00000000) 1099 #define SIO_INTERP1_BASE1_MSB _u(31) 1100 #define SIO_INTERP1_BASE1_LSB _u(0) 1101 #define SIO_INTERP1_BASE1_ACCESS "RW" 1102 // ============================================================================= 1103 // Register : SIO_INTERP1_BASE2 1104 // Description : Read/write access to BASE2 register. 1105 #define SIO_INTERP1_BASE2_OFFSET _u(0x000000d0) 1106 #define SIO_INTERP1_BASE2_BITS _u(0xffffffff) 1107 #define SIO_INTERP1_BASE2_RESET _u(0x00000000) 1108 #define SIO_INTERP1_BASE2_MSB _u(31) 1109 #define SIO_INTERP1_BASE2_LSB _u(0) 1110 #define SIO_INTERP1_BASE2_ACCESS "RW" 1111 // ============================================================================= 1112 // Register : SIO_INTERP1_POP_LANE0 1113 // Description : Read LANE0 result, and simultaneously write lane results to 1114 // both accumulators (POP). 1115 #define SIO_INTERP1_POP_LANE0_OFFSET _u(0x000000d4) 1116 #define SIO_INTERP1_POP_LANE0_BITS _u(0xffffffff) 1117 #define SIO_INTERP1_POP_LANE0_RESET _u(0x00000000) 1118 #define SIO_INTERP1_POP_LANE0_MSB _u(31) 1119 #define SIO_INTERP1_POP_LANE0_LSB _u(0) 1120 #define SIO_INTERP1_POP_LANE0_ACCESS "RO" 1121 // ============================================================================= 1122 // Register : SIO_INTERP1_POP_LANE1 1123 // Description : Read LANE1 result, and simultaneously write lane results to 1124 // both accumulators (POP). 1125 #define SIO_INTERP1_POP_LANE1_OFFSET _u(0x000000d8) 1126 #define SIO_INTERP1_POP_LANE1_BITS _u(0xffffffff) 1127 #define SIO_INTERP1_POP_LANE1_RESET _u(0x00000000) 1128 #define SIO_INTERP1_POP_LANE1_MSB _u(31) 1129 #define SIO_INTERP1_POP_LANE1_LSB _u(0) 1130 #define SIO_INTERP1_POP_LANE1_ACCESS "RO" 1131 // ============================================================================= 1132 // Register : SIO_INTERP1_POP_FULL 1133 // Description : Read FULL result, and simultaneously write lane results to both 1134 // accumulators (POP). 1135 #define SIO_INTERP1_POP_FULL_OFFSET _u(0x000000dc) 1136 #define SIO_INTERP1_POP_FULL_BITS _u(0xffffffff) 1137 #define SIO_INTERP1_POP_FULL_RESET _u(0x00000000) 1138 #define SIO_INTERP1_POP_FULL_MSB _u(31) 1139 #define SIO_INTERP1_POP_FULL_LSB _u(0) 1140 #define SIO_INTERP1_POP_FULL_ACCESS "RO" 1141 // ============================================================================= 1142 // Register : SIO_INTERP1_PEEK_LANE0 1143 // Description : Read LANE0 result, without altering any internal state (PEEK). 1144 #define SIO_INTERP1_PEEK_LANE0_OFFSET _u(0x000000e0) 1145 #define SIO_INTERP1_PEEK_LANE0_BITS _u(0xffffffff) 1146 #define SIO_INTERP1_PEEK_LANE0_RESET _u(0x00000000) 1147 #define SIO_INTERP1_PEEK_LANE0_MSB _u(31) 1148 #define SIO_INTERP1_PEEK_LANE0_LSB _u(0) 1149 #define SIO_INTERP1_PEEK_LANE0_ACCESS "RO" 1150 // ============================================================================= 1151 // Register : SIO_INTERP1_PEEK_LANE1 1152 // Description : Read LANE1 result, without altering any internal state (PEEK). 1153 #define SIO_INTERP1_PEEK_LANE1_OFFSET _u(0x000000e4) 1154 #define SIO_INTERP1_PEEK_LANE1_BITS _u(0xffffffff) 1155 #define SIO_INTERP1_PEEK_LANE1_RESET _u(0x00000000) 1156 #define SIO_INTERP1_PEEK_LANE1_MSB _u(31) 1157 #define SIO_INTERP1_PEEK_LANE1_LSB _u(0) 1158 #define SIO_INTERP1_PEEK_LANE1_ACCESS "RO" 1159 // ============================================================================= 1160 // Register : SIO_INTERP1_PEEK_FULL 1161 // Description : Read FULL result, without altering any internal state (PEEK). 1162 #define SIO_INTERP1_PEEK_FULL_OFFSET _u(0x000000e8) 1163 #define SIO_INTERP1_PEEK_FULL_BITS _u(0xffffffff) 1164 #define SIO_INTERP1_PEEK_FULL_RESET _u(0x00000000) 1165 #define SIO_INTERP1_PEEK_FULL_MSB _u(31) 1166 #define SIO_INTERP1_PEEK_FULL_LSB _u(0) 1167 #define SIO_INTERP1_PEEK_FULL_ACCESS "RO" 1168 // ============================================================================= 1169 // Register : SIO_INTERP1_CTRL_LANE0 1170 // Description : Control register for lane 0 1171 #define SIO_INTERP1_CTRL_LANE0_OFFSET _u(0x000000ec) 1172 #define SIO_INTERP1_CTRL_LANE0_BITS _u(0x03dfffff) 1173 #define SIO_INTERP1_CTRL_LANE0_RESET _u(0x00000000) 1174 // ----------------------------------------------------------------------------- 1175 // Field : SIO_INTERP1_CTRL_LANE0_OVERF 1176 // Description : Set if either OVERF0 or OVERF1 is set. 1177 #define SIO_INTERP1_CTRL_LANE0_OVERF_RESET _u(0x0) 1178 #define SIO_INTERP1_CTRL_LANE0_OVERF_BITS _u(0x02000000) 1179 #define SIO_INTERP1_CTRL_LANE0_OVERF_MSB _u(25) 1180 #define SIO_INTERP1_CTRL_LANE0_OVERF_LSB _u(25) 1181 #define SIO_INTERP1_CTRL_LANE0_OVERF_ACCESS "RO" 1182 // ----------------------------------------------------------------------------- 1183 // Field : SIO_INTERP1_CTRL_LANE0_OVERF1 1184 // Description : Indicates if any masked-off MSBs in ACCUM1 are set. 1185 #define SIO_INTERP1_CTRL_LANE0_OVERF1_RESET _u(0x0) 1186 #define SIO_INTERP1_CTRL_LANE0_OVERF1_BITS _u(0x01000000) 1187 #define SIO_INTERP1_CTRL_LANE0_OVERF1_MSB _u(24) 1188 #define SIO_INTERP1_CTRL_LANE0_OVERF1_LSB _u(24) 1189 #define SIO_INTERP1_CTRL_LANE0_OVERF1_ACCESS "RO" 1190 // ----------------------------------------------------------------------------- 1191 // Field : SIO_INTERP1_CTRL_LANE0_OVERF0 1192 // Description : Indicates if any masked-off MSBs in ACCUM0 are set. 1193 #define SIO_INTERP1_CTRL_LANE0_OVERF0_RESET _u(0x0) 1194 #define SIO_INTERP1_CTRL_LANE0_OVERF0_BITS _u(0x00800000) 1195 #define SIO_INTERP1_CTRL_LANE0_OVERF0_MSB _u(23) 1196 #define SIO_INTERP1_CTRL_LANE0_OVERF0_LSB _u(23) 1197 #define SIO_INTERP1_CTRL_LANE0_OVERF0_ACCESS "RO" 1198 // ----------------------------------------------------------------------------- 1199 // Field : SIO_INTERP1_CTRL_LANE0_CLAMP 1200 // Description : Only present on INTERP1 on each core. If CLAMP mode is enabled: 1201 // - LANE0 result is shifted and masked ACCUM0, clamped by a lower 1202 // bound of 1203 // BASE0 and an upper bound of BASE1. 1204 // - Signedness of these comparisons is determined by 1205 // LANE0_CTRL_SIGNED 1206 #define SIO_INTERP1_CTRL_LANE0_CLAMP_RESET _u(0x0) 1207 #define SIO_INTERP1_CTRL_LANE0_CLAMP_BITS _u(0x00400000) 1208 #define SIO_INTERP1_CTRL_LANE0_CLAMP_MSB _u(22) 1209 #define SIO_INTERP1_CTRL_LANE0_CLAMP_LSB _u(22) 1210 #define SIO_INTERP1_CTRL_LANE0_CLAMP_ACCESS "RW" 1211 // ----------------------------------------------------------------------------- 1212 // Field : SIO_INTERP1_CTRL_LANE0_FORCE_MSB 1213 // Description : ORed into bits 29:28 of the lane result presented to the 1214 // processor on the bus. 1215 // No effect on the internal 32-bit datapath. Handy for using a 1216 // lane to generate sequence 1217 // of pointers into flash or SRAM. 1218 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_RESET _u(0x0) 1219 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_BITS _u(0x00180000) 1220 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_MSB _u(20) 1221 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_LSB _u(19) 1222 #define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_ACCESS "RW" 1223 // ----------------------------------------------------------------------------- 1224 // Field : SIO_INTERP1_CTRL_LANE0_ADD_RAW 1225 // Description : If 1, mask + shift is bypassed for LANE0 result. This does not 1226 // affect FULL result. 1227 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_RESET _u(0x0) 1228 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_BITS _u(0x00040000) 1229 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_MSB _u(18) 1230 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_LSB _u(18) 1231 #define SIO_INTERP1_CTRL_LANE0_ADD_RAW_ACCESS "RW" 1232 // ----------------------------------------------------------------------------- 1233 // Field : SIO_INTERP1_CTRL_LANE0_CROSS_RESULT 1234 // Description : If 1, feed the opposite lane's result into this lane's 1235 // accumulator on POP. 1236 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_RESET _u(0x0) 1237 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_BITS _u(0x00020000) 1238 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_MSB _u(17) 1239 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_LSB _u(17) 1240 #define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_ACCESS "RW" 1241 // ----------------------------------------------------------------------------- 1242 // Field : SIO_INTERP1_CTRL_LANE0_CROSS_INPUT 1243 // Description : If 1, feed the opposite lane's accumulator into this lane's 1244 // shift + mask hardware. 1245 // Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is 1246 // before the shift+mask bypass) 1247 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_RESET _u(0x0) 1248 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_BITS _u(0x00010000) 1249 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_MSB _u(16) 1250 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_LSB _u(16) 1251 #define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_ACCESS "RW" 1252 // ----------------------------------------------------------------------------- 1253 // Field : SIO_INTERP1_CTRL_LANE0_SIGNED 1254 // Description : If SIGNED is set, the shifted and masked accumulator value is 1255 // sign-extended to 32 bits 1256 // before adding to BASE0, and LANE0 PEEK/POP appear extended to 1257 // 32 bits when read by processor. 1258 #define SIO_INTERP1_CTRL_LANE0_SIGNED_RESET _u(0x0) 1259 #define SIO_INTERP1_CTRL_LANE0_SIGNED_BITS _u(0x00008000) 1260 #define SIO_INTERP1_CTRL_LANE0_SIGNED_MSB _u(15) 1261 #define SIO_INTERP1_CTRL_LANE0_SIGNED_LSB _u(15) 1262 #define SIO_INTERP1_CTRL_LANE0_SIGNED_ACCESS "RW" 1263 // ----------------------------------------------------------------------------- 1264 // Field : SIO_INTERP1_CTRL_LANE0_MASK_MSB 1265 // Description : The most-significant bit allowed to pass by the mask 1266 // (inclusive) 1267 // Setting MSB < LSB may cause chip to turn inside-out 1268 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_RESET _u(0x00) 1269 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_BITS _u(0x00007c00) 1270 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_MSB _u(14) 1271 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_LSB _u(10) 1272 #define SIO_INTERP1_CTRL_LANE0_MASK_MSB_ACCESS "RW" 1273 // ----------------------------------------------------------------------------- 1274 // Field : SIO_INTERP1_CTRL_LANE0_MASK_LSB 1275 // Description : The least-significant bit allowed to pass by the mask 1276 // (inclusive) 1277 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_RESET _u(0x00) 1278 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_BITS _u(0x000003e0) 1279 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_MSB _u(9) 1280 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_LSB _u(5) 1281 #define SIO_INTERP1_CTRL_LANE0_MASK_LSB_ACCESS "RW" 1282 // ----------------------------------------------------------------------------- 1283 // Field : SIO_INTERP1_CTRL_LANE0_SHIFT 1284 // Description : Right-rotate applied to accumulator before masking. By 1285 // appropriately configuring the masks, left and right shifts can 1286 // be synthesised. 1287 #define SIO_INTERP1_CTRL_LANE0_SHIFT_RESET _u(0x00) 1288 #define SIO_INTERP1_CTRL_LANE0_SHIFT_BITS _u(0x0000001f) 1289 #define SIO_INTERP1_CTRL_LANE0_SHIFT_MSB _u(4) 1290 #define SIO_INTERP1_CTRL_LANE0_SHIFT_LSB _u(0) 1291 #define SIO_INTERP1_CTRL_LANE0_SHIFT_ACCESS "RW" 1292 // ============================================================================= 1293 // Register : SIO_INTERP1_CTRL_LANE1 1294 // Description : Control register for lane 1 1295 #define SIO_INTERP1_CTRL_LANE1_OFFSET _u(0x000000f0) 1296 #define SIO_INTERP1_CTRL_LANE1_BITS _u(0x001fffff) 1297 #define SIO_INTERP1_CTRL_LANE1_RESET _u(0x00000000) 1298 // ----------------------------------------------------------------------------- 1299 // Field : SIO_INTERP1_CTRL_LANE1_FORCE_MSB 1300 // Description : ORed into bits 29:28 of the lane result presented to the 1301 // processor on the bus. 1302 // No effect on the internal 32-bit datapath. Handy for using a 1303 // lane to generate sequence 1304 // of pointers into flash or SRAM. 1305 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_RESET _u(0x0) 1306 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_BITS _u(0x00180000) 1307 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_MSB _u(20) 1308 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_LSB _u(19) 1309 #define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_ACCESS "RW" 1310 // ----------------------------------------------------------------------------- 1311 // Field : SIO_INTERP1_CTRL_LANE1_ADD_RAW 1312 // Description : If 1, mask + shift is bypassed for LANE1 result. This does not 1313 // affect FULL result. 1314 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_RESET _u(0x0) 1315 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_BITS _u(0x00040000) 1316 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_MSB _u(18) 1317 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_LSB _u(18) 1318 #define SIO_INTERP1_CTRL_LANE1_ADD_RAW_ACCESS "RW" 1319 // ----------------------------------------------------------------------------- 1320 // Field : SIO_INTERP1_CTRL_LANE1_CROSS_RESULT 1321 // Description : If 1, feed the opposite lane's result into this lane's 1322 // accumulator on POP. 1323 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_RESET _u(0x0) 1324 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_BITS _u(0x00020000) 1325 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_MSB _u(17) 1326 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_LSB _u(17) 1327 #define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_ACCESS "RW" 1328 // ----------------------------------------------------------------------------- 1329 // Field : SIO_INTERP1_CTRL_LANE1_CROSS_INPUT 1330 // Description : If 1, feed the opposite lane's accumulator into this lane's 1331 // shift + mask hardware. 1332 // Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is 1333 // before the shift+mask bypass) 1334 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_RESET _u(0x0) 1335 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_BITS _u(0x00010000) 1336 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_MSB _u(16) 1337 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_LSB _u(16) 1338 #define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_ACCESS "RW" 1339 // ----------------------------------------------------------------------------- 1340 // Field : SIO_INTERP1_CTRL_LANE1_SIGNED 1341 // Description : If SIGNED is set, the shifted and masked accumulator value is 1342 // sign-extended to 32 bits 1343 // before adding to BASE1, and LANE1 PEEK/POP appear extended to 1344 // 32 bits when read by processor. 1345 #define SIO_INTERP1_CTRL_LANE1_SIGNED_RESET _u(0x0) 1346 #define SIO_INTERP1_CTRL_LANE1_SIGNED_BITS _u(0x00008000) 1347 #define SIO_INTERP1_CTRL_LANE1_SIGNED_MSB _u(15) 1348 #define SIO_INTERP1_CTRL_LANE1_SIGNED_LSB _u(15) 1349 #define SIO_INTERP1_CTRL_LANE1_SIGNED_ACCESS "RW" 1350 // ----------------------------------------------------------------------------- 1351 // Field : SIO_INTERP1_CTRL_LANE1_MASK_MSB 1352 // Description : The most-significant bit allowed to pass by the mask 1353 // (inclusive) 1354 // Setting MSB < LSB may cause chip to turn inside-out 1355 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_RESET _u(0x00) 1356 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_BITS _u(0x00007c00) 1357 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_MSB _u(14) 1358 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_LSB _u(10) 1359 #define SIO_INTERP1_CTRL_LANE1_MASK_MSB_ACCESS "RW" 1360 // ----------------------------------------------------------------------------- 1361 // Field : SIO_INTERP1_CTRL_LANE1_MASK_LSB 1362 // Description : The least-significant bit allowed to pass by the mask 1363 // (inclusive) 1364 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_RESET _u(0x00) 1365 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_BITS _u(0x000003e0) 1366 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_MSB _u(9) 1367 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_LSB _u(5) 1368 #define SIO_INTERP1_CTRL_LANE1_MASK_LSB_ACCESS "RW" 1369 // ----------------------------------------------------------------------------- 1370 // Field : SIO_INTERP1_CTRL_LANE1_SHIFT 1371 // Description : Right-rotate applied to accumulator before masking. By 1372 // appropriately configuring the masks, left and right shifts can 1373 // be synthesised. 1374 #define SIO_INTERP1_CTRL_LANE1_SHIFT_RESET _u(0x00) 1375 #define SIO_INTERP1_CTRL_LANE1_SHIFT_BITS _u(0x0000001f) 1376 #define SIO_INTERP1_CTRL_LANE1_SHIFT_MSB _u(4) 1377 #define SIO_INTERP1_CTRL_LANE1_SHIFT_LSB _u(0) 1378 #define SIO_INTERP1_CTRL_LANE1_SHIFT_ACCESS "RW" 1379 // ============================================================================= 1380 // Register : SIO_INTERP1_ACCUM0_ADD 1381 // Description : Values written here are atomically added to ACCUM0 1382 // Reading yields lane 0's raw shift and mask value (BASE0 not 1383 // added). 1384 #define SIO_INTERP1_ACCUM0_ADD_OFFSET _u(0x000000f4) 1385 #define SIO_INTERP1_ACCUM0_ADD_BITS _u(0x00ffffff) 1386 #define SIO_INTERP1_ACCUM0_ADD_RESET _u(0x00000000) 1387 #define SIO_INTERP1_ACCUM0_ADD_MSB _u(23) 1388 #define SIO_INTERP1_ACCUM0_ADD_LSB _u(0) 1389 #define SIO_INTERP1_ACCUM0_ADD_ACCESS "RW" 1390 // ============================================================================= 1391 // Register : SIO_INTERP1_ACCUM1_ADD 1392 // Description : Values written here are atomically added to ACCUM1 1393 // Reading yields lane 1's raw shift and mask value (BASE1 not 1394 // added). 1395 #define SIO_INTERP1_ACCUM1_ADD_OFFSET _u(0x000000f8) 1396 #define SIO_INTERP1_ACCUM1_ADD_BITS _u(0x00ffffff) 1397 #define SIO_INTERP1_ACCUM1_ADD_RESET _u(0x00000000) 1398 #define SIO_INTERP1_ACCUM1_ADD_MSB _u(23) 1399 #define SIO_INTERP1_ACCUM1_ADD_LSB _u(0) 1400 #define SIO_INTERP1_ACCUM1_ADD_ACCESS "RW" 1401 // ============================================================================= 1402 // Register : SIO_INTERP1_BASE_1AND0 1403 // Description : On write, the lower 16 bits go to BASE0, upper bits to BASE1 1404 // simultaneously. 1405 // Each half is sign-extended to 32 bits if that lane's SIGNED 1406 // flag is set. 1407 #define SIO_INTERP1_BASE_1AND0_OFFSET _u(0x000000fc) 1408 #define SIO_INTERP1_BASE_1AND0_BITS _u(0xffffffff) 1409 #define SIO_INTERP1_BASE_1AND0_RESET _u(0x00000000) 1410 #define SIO_INTERP1_BASE_1AND0_MSB _u(31) 1411 #define SIO_INTERP1_BASE_1AND0_LSB _u(0) 1412 #define SIO_INTERP1_BASE_1AND0_ACCESS "WO" 1413 // ============================================================================= 1414 // Register : SIO_SPINLOCK0 1415 // Description : Reading from a spinlock address will: 1416 // - Return 0 if lock is already locked 1417 // - Otherwise return nonzero, and simultaneously claim the lock 1418 // 1419 // Writing (any value) releases the lock. 1420 // If core 0 and core 1 attempt to claim the same lock 1421 // simultaneously, core 0 wins. 1422 // The value returned on success is 0x1 << lock number. 1423 #define SIO_SPINLOCK0_OFFSET _u(0x00000100) 1424 #define SIO_SPINLOCK0_BITS _u(0xffffffff) 1425 #define SIO_SPINLOCK0_RESET _u(0x00000000) 1426 #define SIO_SPINLOCK0_MSB _u(31) 1427 #define SIO_SPINLOCK0_LSB _u(0) 1428 #define SIO_SPINLOCK0_ACCESS "RW" 1429 // ============================================================================= 1430 // Register : SIO_SPINLOCK1 1431 // Description : Reading from a spinlock address will: 1432 // - Return 0 if lock is already locked 1433 // - Otherwise return nonzero, and simultaneously claim the lock 1434 // 1435 // Writing (any value) releases the lock. 1436 // If core 0 and core 1 attempt to claim the same lock 1437 // simultaneously, core 0 wins. 1438 // The value returned on success is 0x1 << lock number. 1439 #define SIO_SPINLOCK1_OFFSET _u(0x00000104) 1440 #define SIO_SPINLOCK1_BITS _u(0xffffffff) 1441 #define SIO_SPINLOCK1_RESET _u(0x00000000) 1442 #define SIO_SPINLOCK1_MSB _u(31) 1443 #define SIO_SPINLOCK1_LSB _u(0) 1444 #define SIO_SPINLOCK1_ACCESS "RW" 1445 // ============================================================================= 1446 // Register : SIO_SPINLOCK2 1447 // Description : Reading from a spinlock address will: 1448 // - Return 0 if lock is already locked 1449 // - Otherwise return nonzero, and simultaneously claim the lock 1450 // 1451 // Writing (any value) releases the lock. 1452 // If core 0 and core 1 attempt to claim the same lock 1453 // simultaneously, core 0 wins. 1454 // The value returned on success is 0x1 << lock number. 1455 #define SIO_SPINLOCK2_OFFSET _u(0x00000108) 1456 #define SIO_SPINLOCK2_BITS _u(0xffffffff) 1457 #define SIO_SPINLOCK2_RESET _u(0x00000000) 1458 #define SIO_SPINLOCK2_MSB _u(31) 1459 #define SIO_SPINLOCK2_LSB _u(0) 1460 #define SIO_SPINLOCK2_ACCESS "RW" 1461 // ============================================================================= 1462 // Register : SIO_SPINLOCK3 1463 // Description : Reading from a spinlock address will: 1464 // - Return 0 if lock is already locked 1465 // - Otherwise return nonzero, and simultaneously claim the lock 1466 // 1467 // Writing (any value) releases the lock. 1468 // If core 0 and core 1 attempt to claim the same lock 1469 // simultaneously, core 0 wins. 1470 // The value returned on success is 0x1 << lock number. 1471 #define SIO_SPINLOCK3_OFFSET _u(0x0000010c) 1472 #define SIO_SPINLOCK3_BITS _u(0xffffffff) 1473 #define SIO_SPINLOCK3_RESET _u(0x00000000) 1474 #define SIO_SPINLOCK3_MSB _u(31) 1475 #define SIO_SPINLOCK3_LSB _u(0) 1476 #define SIO_SPINLOCK3_ACCESS "RW" 1477 // ============================================================================= 1478 // Register : SIO_SPINLOCK4 1479 // Description : Reading from a spinlock address will: 1480 // - Return 0 if lock is already locked 1481 // - Otherwise return nonzero, and simultaneously claim the lock 1482 // 1483 // Writing (any value) releases the lock. 1484 // If core 0 and core 1 attempt to claim the same lock 1485 // simultaneously, core 0 wins. 1486 // The value returned on success is 0x1 << lock number. 1487 #define SIO_SPINLOCK4_OFFSET _u(0x00000110) 1488 #define SIO_SPINLOCK4_BITS _u(0xffffffff) 1489 #define SIO_SPINLOCK4_RESET _u(0x00000000) 1490 #define SIO_SPINLOCK4_MSB _u(31) 1491 #define SIO_SPINLOCK4_LSB _u(0) 1492 #define SIO_SPINLOCK4_ACCESS "RW" 1493 // ============================================================================= 1494 // Register : SIO_SPINLOCK5 1495 // Description : Reading from a spinlock address will: 1496 // - Return 0 if lock is already locked 1497 // - Otherwise return nonzero, and simultaneously claim the lock 1498 // 1499 // Writing (any value) releases the lock. 1500 // If core 0 and core 1 attempt to claim the same lock 1501 // simultaneously, core 0 wins. 1502 // The value returned on success is 0x1 << lock number. 1503 #define SIO_SPINLOCK5_OFFSET _u(0x00000114) 1504 #define SIO_SPINLOCK5_BITS _u(0xffffffff) 1505 #define SIO_SPINLOCK5_RESET _u(0x00000000) 1506 #define SIO_SPINLOCK5_MSB _u(31) 1507 #define SIO_SPINLOCK5_LSB _u(0) 1508 #define SIO_SPINLOCK5_ACCESS "RW" 1509 // ============================================================================= 1510 // Register : SIO_SPINLOCK6 1511 // Description : Reading from a spinlock address will: 1512 // - Return 0 if lock is already locked 1513 // - Otherwise return nonzero, and simultaneously claim the lock 1514 // 1515 // Writing (any value) releases the lock. 1516 // If core 0 and core 1 attempt to claim the same lock 1517 // simultaneously, core 0 wins. 1518 // The value returned on success is 0x1 << lock number. 1519 #define SIO_SPINLOCK6_OFFSET _u(0x00000118) 1520 #define SIO_SPINLOCK6_BITS _u(0xffffffff) 1521 #define SIO_SPINLOCK6_RESET _u(0x00000000) 1522 #define SIO_SPINLOCK6_MSB _u(31) 1523 #define SIO_SPINLOCK6_LSB _u(0) 1524 #define SIO_SPINLOCK6_ACCESS "RW" 1525 // ============================================================================= 1526 // Register : SIO_SPINLOCK7 1527 // Description : Reading from a spinlock address will: 1528 // - Return 0 if lock is already locked 1529 // - Otherwise return nonzero, and simultaneously claim the lock 1530 // 1531 // Writing (any value) releases the lock. 1532 // If core 0 and core 1 attempt to claim the same lock 1533 // simultaneously, core 0 wins. 1534 // The value returned on success is 0x1 << lock number. 1535 #define SIO_SPINLOCK7_OFFSET _u(0x0000011c) 1536 #define SIO_SPINLOCK7_BITS _u(0xffffffff) 1537 #define SIO_SPINLOCK7_RESET _u(0x00000000) 1538 #define SIO_SPINLOCK7_MSB _u(31) 1539 #define SIO_SPINLOCK7_LSB _u(0) 1540 #define SIO_SPINLOCK7_ACCESS "RW" 1541 // ============================================================================= 1542 // Register : SIO_SPINLOCK8 1543 // Description : Reading from a spinlock address will: 1544 // - Return 0 if lock is already locked 1545 // - Otherwise return nonzero, and simultaneously claim the lock 1546 // 1547 // Writing (any value) releases the lock. 1548 // If core 0 and core 1 attempt to claim the same lock 1549 // simultaneously, core 0 wins. 1550 // The value returned on success is 0x1 << lock number. 1551 #define SIO_SPINLOCK8_OFFSET _u(0x00000120) 1552 #define SIO_SPINLOCK8_BITS _u(0xffffffff) 1553 #define SIO_SPINLOCK8_RESET _u(0x00000000) 1554 #define SIO_SPINLOCK8_MSB _u(31) 1555 #define SIO_SPINLOCK8_LSB _u(0) 1556 #define SIO_SPINLOCK8_ACCESS "RW" 1557 // ============================================================================= 1558 // Register : SIO_SPINLOCK9 1559 // Description : Reading from a spinlock address will: 1560 // - Return 0 if lock is already locked 1561 // - Otherwise return nonzero, and simultaneously claim the lock 1562 // 1563 // Writing (any value) releases the lock. 1564 // If core 0 and core 1 attempt to claim the same lock 1565 // simultaneously, core 0 wins. 1566 // The value returned on success is 0x1 << lock number. 1567 #define SIO_SPINLOCK9_OFFSET _u(0x00000124) 1568 #define SIO_SPINLOCK9_BITS _u(0xffffffff) 1569 #define SIO_SPINLOCK9_RESET _u(0x00000000) 1570 #define SIO_SPINLOCK9_MSB _u(31) 1571 #define SIO_SPINLOCK9_LSB _u(0) 1572 #define SIO_SPINLOCK9_ACCESS "RW" 1573 // ============================================================================= 1574 // Register : SIO_SPINLOCK10 1575 // Description : Reading from a spinlock address will: 1576 // - Return 0 if lock is already locked 1577 // - Otherwise return nonzero, and simultaneously claim the lock 1578 // 1579 // Writing (any value) releases the lock. 1580 // If core 0 and core 1 attempt to claim the same lock 1581 // simultaneously, core 0 wins. 1582 // The value returned on success is 0x1 << lock number. 1583 #define SIO_SPINLOCK10_OFFSET _u(0x00000128) 1584 #define SIO_SPINLOCK10_BITS _u(0xffffffff) 1585 #define SIO_SPINLOCK10_RESET _u(0x00000000) 1586 #define SIO_SPINLOCK10_MSB _u(31) 1587 #define SIO_SPINLOCK10_LSB _u(0) 1588 #define SIO_SPINLOCK10_ACCESS "RW" 1589 // ============================================================================= 1590 // Register : SIO_SPINLOCK11 1591 // Description : Reading from a spinlock address will: 1592 // - Return 0 if lock is already locked 1593 // - Otherwise return nonzero, and simultaneously claim the lock 1594 // 1595 // Writing (any value) releases the lock. 1596 // If core 0 and core 1 attempt to claim the same lock 1597 // simultaneously, core 0 wins. 1598 // The value returned on success is 0x1 << lock number. 1599 #define SIO_SPINLOCK11_OFFSET _u(0x0000012c) 1600 #define SIO_SPINLOCK11_BITS _u(0xffffffff) 1601 #define SIO_SPINLOCK11_RESET _u(0x00000000) 1602 #define SIO_SPINLOCK11_MSB _u(31) 1603 #define SIO_SPINLOCK11_LSB _u(0) 1604 #define SIO_SPINLOCK11_ACCESS "RW" 1605 // ============================================================================= 1606 // Register : SIO_SPINLOCK12 1607 // Description : Reading from a spinlock address will: 1608 // - Return 0 if lock is already locked 1609 // - Otherwise return nonzero, and simultaneously claim the lock 1610 // 1611 // Writing (any value) releases the lock. 1612 // If core 0 and core 1 attempt to claim the same lock 1613 // simultaneously, core 0 wins. 1614 // The value returned on success is 0x1 << lock number. 1615 #define SIO_SPINLOCK12_OFFSET _u(0x00000130) 1616 #define SIO_SPINLOCK12_BITS _u(0xffffffff) 1617 #define SIO_SPINLOCK12_RESET _u(0x00000000) 1618 #define SIO_SPINLOCK12_MSB _u(31) 1619 #define SIO_SPINLOCK12_LSB _u(0) 1620 #define SIO_SPINLOCK12_ACCESS "RW" 1621 // ============================================================================= 1622 // Register : SIO_SPINLOCK13 1623 // Description : Reading from a spinlock address will: 1624 // - Return 0 if lock is already locked 1625 // - Otherwise return nonzero, and simultaneously claim the lock 1626 // 1627 // Writing (any value) releases the lock. 1628 // If core 0 and core 1 attempt to claim the same lock 1629 // simultaneously, core 0 wins. 1630 // The value returned on success is 0x1 << lock number. 1631 #define SIO_SPINLOCK13_OFFSET _u(0x00000134) 1632 #define SIO_SPINLOCK13_BITS _u(0xffffffff) 1633 #define SIO_SPINLOCK13_RESET _u(0x00000000) 1634 #define SIO_SPINLOCK13_MSB _u(31) 1635 #define SIO_SPINLOCK13_LSB _u(0) 1636 #define SIO_SPINLOCK13_ACCESS "RW" 1637 // ============================================================================= 1638 // Register : SIO_SPINLOCK14 1639 // Description : Reading from a spinlock address will: 1640 // - Return 0 if lock is already locked 1641 // - Otherwise return nonzero, and simultaneously claim the lock 1642 // 1643 // Writing (any value) releases the lock. 1644 // If core 0 and core 1 attempt to claim the same lock 1645 // simultaneously, core 0 wins. 1646 // The value returned on success is 0x1 << lock number. 1647 #define SIO_SPINLOCK14_OFFSET _u(0x00000138) 1648 #define SIO_SPINLOCK14_BITS _u(0xffffffff) 1649 #define SIO_SPINLOCK14_RESET _u(0x00000000) 1650 #define SIO_SPINLOCK14_MSB _u(31) 1651 #define SIO_SPINLOCK14_LSB _u(0) 1652 #define SIO_SPINLOCK14_ACCESS "RW" 1653 // ============================================================================= 1654 // Register : SIO_SPINLOCK15 1655 // Description : Reading from a spinlock address will: 1656 // - Return 0 if lock is already locked 1657 // - Otherwise return nonzero, and simultaneously claim the lock 1658 // 1659 // Writing (any value) releases the lock. 1660 // If core 0 and core 1 attempt to claim the same lock 1661 // simultaneously, core 0 wins. 1662 // The value returned on success is 0x1 << lock number. 1663 #define SIO_SPINLOCK15_OFFSET _u(0x0000013c) 1664 #define SIO_SPINLOCK15_BITS _u(0xffffffff) 1665 #define SIO_SPINLOCK15_RESET _u(0x00000000) 1666 #define SIO_SPINLOCK15_MSB _u(31) 1667 #define SIO_SPINLOCK15_LSB _u(0) 1668 #define SIO_SPINLOCK15_ACCESS "RW" 1669 // ============================================================================= 1670 // Register : SIO_SPINLOCK16 1671 // Description : Reading from a spinlock address will: 1672 // - Return 0 if lock is already locked 1673 // - Otherwise return nonzero, and simultaneously claim the lock 1674 // 1675 // Writing (any value) releases the lock. 1676 // If core 0 and core 1 attempt to claim the same lock 1677 // simultaneously, core 0 wins. 1678 // The value returned on success is 0x1 << lock number. 1679 #define SIO_SPINLOCK16_OFFSET _u(0x00000140) 1680 #define SIO_SPINLOCK16_BITS _u(0xffffffff) 1681 #define SIO_SPINLOCK16_RESET _u(0x00000000) 1682 #define SIO_SPINLOCK16_MSB _u(31) 1683 #define SIO_SPINLOCK16_LSB _u(0) 1684 #define SIO_SPINLOCK16_ACCESS "RW" 1685 // ============================================================================= 1686 // Register : SIO_SPINLOCK17 1687 // Description : Reading from a spinlock address will: 1688 // - Return 0 if lock is already locked 1689 // - Otherwise return nonzero, and simultaneously claim the lock 1690 // 1691 // Writing (any value) releases the lock. 1692 // If core 0 and core 1 attempt to claim the same lock 1693 // simultaneously, core 0 wins. 1694 // The value returned on success is 0x1 << lock number. 1695 #define SIO_SPINLOCK17_OFFSET _u(0x00000144) 1696 #define SIO_SPINLOCK17_BITS _u(0xffffffff) 1697 #define SIO_SPINLOCK17_RESET _u(0x00000000) 1698 #define SIO_SPINLOCK17_MSB _u(31) 1699 #define SIO_SPINLOCK17_LSB _u(0) 1700 #define SIO_SPINLOCK17_ACCESS "RW" 1701 // ============================================================================= 1702 // Register : SIO_SPINLOCK18 1703 // Description : Reading from a spinlock address will: 1704 // - Return 0 if lock is already locked 1705 // - Otherwise return nonzero, and simultaneously claim the lock 1706 // 1707 // Writing (any value) releases the lock. 1708 // If core 0 and core 1 attempt to claim the same lock 1709 // simultaneously, core 0 wins. 1710 // The value returned on success is 0x1 << lock number. 1711 #define SIO_SPINLOCK18_OFFSET _u(0x00000148) 1712 #define SIO_SPINLOCK18_BITS _u(0xffffffff) 1713 #define SIO_SPINLOCK18_RESET _u(0x00000000) 1714 #define SIO_SPINLOCK18_MSB _u(31) 1715 #define SIO_SPINLOCK18_LSB _u(0) 1716 #define SIO_SPINLOCK18_ACCESS "RW" 1717 // ============================================================================= 1718 // Register : SIO_SPINLOCK19 1719 // Description : Reading from a spinlock address will: 1720 // - Return 0 if lock is already locked 1721 // - Otherwise return nonzero, and simultaneously claim the lock 1722 // 1723 // Writing (any value) releases the lock. 1724 // If core 0 and core 1 attempt to claim the same lock 1725 // simultaneously, core 0 wins. 1726 // The value returned on success is 0x1 << lock number. 1727 #define SIO_SPINLOCK19_OFFSET _u(0x0000014c) 1728 #define SIO_SPINLOCK19_BITS _u(0xffffffff) 1729 #define SIO_SPINLOCK19_RESET _u(0x00000000) 1730 #define SIO_SPINLOCK19_MSB _u(31) 1731 #define SIO_SPINLOCK19_LSB _u(0) 1732 #define SIO_SPINLOCK19_ACCESS "RW" 1733 // ============================================================================= 1734 // Register : SIO_SPINLOCK20 1735 // Description : Reading from a spinlock address will: 1736 // - Return 0 if lock is already locked 1737 // - Otherwise return nonzero, and simultaneously claim the lock 1738 // 1739 // Writing (any value) releases the lock. 1740 // If core 0 and core 1 attempt to claim the same lock 1741 // simultaneously, core 0 wins. 1742 // The value returned on success is 0x1 << lock number. 1743 #define SIO_SPINLOCK20_OFFSET _u(0x00000150) 1744 #define SIO_SPINLOCK20_BITS _u(0xffffffff) 1745 #define SIO_SPINLOCK20_RESET _u(0x00000000) 1746 #define SIO_SPINLOCK20_MSB _u(31) 1747 #define SIO_SPINLOCK20_LSB _u(0) 1748 #define SIO_SPINLOCK20_ACCESS "RW" 1749 // ============================================================================= 1750 // Register : SIO_SPINLOCK21 1751 // Description : Reading from a spinlock address will: 1752 // - Return 0 if lock is already locked 1753 // - Otherwise return nonzero, and simultaneously claim the lock 1754 // 1755 // Writing (any value) releases the lock. 1756 // If core 0 and core 1 attempt to claim the same lock 1757 // simultaneously, core 0 wins. 1758 // The value returned on success is 0x1 << lock number. 1759 #define SIO_SPINLOCK21_OFFSET _u(0x00000154) 1760 #define SIO_SPINLOCK21_BITS _u(0xffffffff) 1761 #define SIO_SPINLOCK21_RESET _u(0x00000000) 1762 #define SIO_SPINLOCK21_MSB _u(31) 1763 #define SIO_SPINLOCK21_LSB _u(0) 1764 #define SIO_SPINLOCK21_ACCESS "RW" 1765 // ============================================================================= 1766 // Register : SIO_SPINLOCK22 1767 // Description : Reading from a spinlock address will: 1768 // - Return 0 if lock is already locked 1769 // - Otherwise return nonzero, and simultaneously claim the lock 1770 // 1771 // Writing (any value) releases the lock. 1772 // If core 0 and core 1 attempt to claim the same lock 1773 // simultaneously, core 0 wins. 1774 // The value returned on success is 0x1 << lock number. 1775 #define SIO_SPINLOCK22_OFFSET _u(0x00000158) 1776 #define SIO_SPINLOCK22_BITS _u(0xffffffff) 1777 #define SIO_SPINLOCK22_RESET _u(0x00000000) 1778 #define SIO_SPINLOCK22_MSB _u(31) 1779 #define SIO_SPINLOCK22_LSB _u(0) 1780 #define SIO_SPINLOCK22_ACCESS "RW" 1781 // ============================================================================= 1782 // Register : SIO_SPINLOCK23 1783 // Description : Reading from a spinlock address will: 1784 // - Return 0 if lock is already locked 1785 // - Otherwise return nonzero, and simultaneously claim the lock 1786 // 1787 // Writing (any value) releases the lock. 1788 // If core 0 and core 1 attempt to claim the same lock 1789 // simultaneously, core 0 wins. 1790 // The value returned on success is 0x1 << lock number. 1791 #define SIO_SPINLOCK23_OFFSET _u(0x0000015c) 1792 #define SIO_SPINLOCK23_BITS _u(0xffffffff) 1793 #define SIO_SPINLOCK23_RESET _u(0x00000000) 1794 #define SIO_SPINLOCK23_MSB _u(31) 1795 #define SIO_SPINLOCK23_LSB _u(0) 1796 #define SIO_SPINLOCK23_ACCESS "RW" 1797 // ============================================================================= 1798 // Register : SIO_SPINLOCK24 1799 // Description : Reading from a spinlock address will: 1800 // - Return 0 if lock is already locked 1801 // - Otherwise return nonzero, and simultaneously claim the lock 1802 // 1803 // Writing (any value) releases the lock. 1804 // If core 0 and core 1 attempt to claim the same lock 1805 // simultaneously, core 0 wins. 1806 // The value returned on success is 0x1 << lock number. 1807 #define SIO_SPINLOCK24_OFFSET _u(0x00000160) 1808 #define SIO_SPINLOCK24_BITS _u(0xffffffff) 1809 #define SIO_SPINLOCK24_RESET _u(0x00000000) 1810 #define SIO_SPINLOCK24_MSB _u(31) 1811 #define SIO_SPINLOCK24_LSB _u(0) 1812 #define SIO_SPINLOCK24_ACCESS "RW" 1813 // ============================================================================= 1814 // Register : SIO_SPINLOCK25 1815 // Description : Reading from a spinlock address will: 1816 // - Return 0 if lock is already locked 1817 // - Otherwise return nonzero, and simultaneously claim the lock 1818 // 1819 // Writing (any value) releases the lock. 1820 // If core 0 and core 1 attempt to claim the same lock 1821 // simultaneously, core 0 wins. 1822 // The value returned on success is 0x1 << lock number. 1823 #define SIO_SPINLOCK25_OFFSET _u(0x00000164) 1824 #define SIO_SPINLOCK25_BITS _u(0xffffffff) 1825 #define SIO_SPINLOCK25_RESET _u(0x00000000) 1826 #define SIO_SPINLOCK25_MSB _u(31) 1827 #define SIO_SPINLOCK25_LSB _u(0) 1828 #define SIO_SPINLOCK25_ACCESS "RW" 1829 // ============================================================================= 1830 // Register : SIO_SPINLOCK26 1831 // Description : Reading from a spinlock address will: 1832 // - Return 0 if lock is already locked 1833 // - Otherwise return nonzero, and simultaneously claim the lock 1834 // 1835 // Writing (any value) releases the lock. 1836 // If core 0 and core 1 attempt to claim the same lock 1837 // simultaneously, core 0 wins. 1838 // The value returned on success is 0x1 << lock number. 1839 #define SIO_SPINLOCK26_OFFSET _u(0x00000168) 1840 #define SIO_SPINLOCK26_BITS _u(0xffffffff) 1841 #define SIO_SPINLOCK26_RESET _u(0x00000000) 1842 #define SIO_SPINLOCK26_MSB _u(31) 1843 #define SIO_SPINLOCK26_LSB _u(0) 1844 #define SIO_SPINLOCK26_ACCESS "RW" 1845 // ============================================================================= 1846 // Register : SIO_SPINLOCK27 1847 // Description : Reading from a spinlock address will: 1848 // - Return 0 if lock is already locked 1849 // - Otherwise return nonzero, and simultaneously claim the lock 1850 // 1851 // Writing (any value) releases the lock. 1852 // If core 0 and core 1 attempt to claim the same lock 1853 // simultaneously, core 0 wins. 1854 // The value returned on success is 0x1 << lock number. 1855 #define SIO_SPINLOCK27_OFFSET _u(0x0000016c) 1856 #define SIO_SPINLOCK27_BITS _u(0xffffffff) 1857 #define SIO_SPINLOCK27_RESET _u(0x00000000) 1858 #define SIO_SPINLOCK27_MSB _u(31) 1859 #define SIO_SPINLOCK27_LSB _u(0) 1860 #define SIO_SPINLOCK27_ACCESS "RW" 1861 // ============================================================================= 1862 // Register : SIO_SPINLOCK28 1863 // Description : Reading from a spinlock address will: 1864 // - Return 0 if lock is already locked 1865 // - Otherwise return nonzero, and simultaneously claim the lock 1866 // 1867 // Writing (any value) releases the lock. 1868 // If core 0 and core 1 attempt to claim the same lock 1869 // simultaneously, core 0 wins. 1870 // The value returned on success is 0x1 << lock number. 1871 #define SIO_SPINLOCK28_OFFSET _u(0x00000170) 1872 #define SIO_SPINLOCK28_BITS _u(0xffffffff) 1873 #define SIO_SPINLOCK28_RESET _u(0x00000000) 1874 #define SIO_SPINLOCK28_MSB _u(31) 1875 #define SIO_SPINLOCK28_LSB _u(0) 1876 #define SIO_SPINLOCK28_ACCESS "RW" 1877 // ============================================================================= 1878 // Register : SIO_SPINLOCK29 1879 // Description : Reading from a spinlock address will: 1880 // - Return 0 if lock is already locked 1881 // - Otherwise return nonzero, and simultaneously claim the lock 1882 // 1883 // Writing (any value) releases the lock. 1884 // If core 0 and core 1 attempt to claim the same lock 1885 // simultaneously, core 0 wins. 1886 // The value returned on success is 0x1 << lock number. 1887 #define SIO_SPINLOCK29_OFFSET _u(0x00000174) 1888 #define SIO_SPINLOCK29_BITS _u(0xffffffff) 1889 #define SIO_SPINLOCK29_RESET _u(0x00000000) 1890 #define SIO_SPINLOCK29_MSB _u(31) 1891 #define SIO_SPINLOCK29_LSB _u(0) 1892 #define SIO_SPINLOCK29_ACCESS "RW" 1893 // ============================================================================= 1894 // Register : SIO_SPINLOCK30 1895 // Description : Reading from a spinlock address will: 1896 // - Return 0 if lock is already locked 1897 // - Otherwise return nonzero, and simultaneously claim the lock 1898 // 1899 // Writing (any value) releases the lock. 1900 // If core 0 and core 1 attempt to claim the same lock 1901 // simultaneously, core 0 wins. 1902 // The value returned on success is 0x1 << lock number. 1903 #define SIO_SPINLOCK30_OFFSET _u(0x00000178) 1904 #define SIO_SPINLOCK30_BITS _u(0xffffffff) 1905 #define SIO_SPINLOCK30_RESET _u(0x00000000) 1906 #define SIO_SPINLOCK30_MSB _u(31) 1907 #define SIO_SPINLOCK30_LSB _u(0) 1908 #define SIO_SPINLOCK30_ACCESS "RW" 1909 // ============================================================================= 1910 // Register : SIO_SPINLOCK31 1911 // Description : Reading from a spinlock address will: 1912 // - Return 0 if lock is already locked 1913 // - Otherwise return nonzero, and simultaneously claim the lock 1914 // 1915 // Writing (any value) releases the lock. 1916 // If core 0 and core 1 attempt to claim the same lock 1917 // simultaneously, core 0 wins. 1918 // The value returned on success is 0x1 << lock number. 1919 #define SIO_SPINLOCK31_OFFSET _u(0x0000017c) 1920 #define SIO_SPINLOCK31_BITS _u(0xffffffff) 1921 #define SIO_SPINLOCK31_RESET _u(0x00000000) 1922 #define SIO_SPINLOCK31_MSB _u(31) 1923 #define SIO_SPINLOCK31_LSB _u(0) 1924 #define SIO_SPINLOCK31_ACCESS "RW" 1925 // ============================================================================= 1926 // Register : SIO_DOORBELL_OUT_SET 1927 // Description : Trigger a doorbell interrupt on the opposite core. 1928 // 1929 // Write 1 to a bit to set the corresponding bit in DOORBELL_IN on 1930 // the opposite core. This raises the opposite core's doorbell 1931 // interrupt. 1932 // 1933 // Read to get the status of the doorbells currently asserted on 1934 // the opposite core. This is equivalent to that core reading its 1935 // own DOORBELL_IN status. 1936 #define SIO_DOORBELL_OUT_SET_OFFSET _u(0x00000180) 1937 #define SIO_DOORBELL_OUT_SET_BITS _u(0x000000ff) 1938 #define SIO_DOORBELL_OUT_SET_RESET _u(0x00000000) 1939 #define SIO_DOORBELL_OUT_SET_MSB _u(7) 1940 #define SIO_DOORBELL_OUT_SET_LSB _u(0) 1941 #define SIO_DOORBELL_OUT_SET_ACCESS "RW" 1942 // ============================================================================= 1943 // Register : SIO_DOORBELL_OUT_CLR 1944 // Description : Clear doorbells which have been posted to the opposite core. 1945 // This register is intended for debugging and initialisation 1946 // purposes. 1947 // 1948 // Writing 1 to a bit in DOORBELL_OUT_CLR clears the corresponding 1949 // bit in DOORBELL_IN on the opposite core. Clearing all bits will 1950 // cause that core's doorbell interrupt to deassert. Since the 1951 // usual order of events is for software to send events using 1952 // DOORBELL_OUT_SET, and acknowledge incoming events by writing to 1953 // DOORBELL_IN_CLR, this register should be used with caution to 1954 // avoid race conditions. 1955 // 1956 // Reading returns the status of the doorbells currently asserted 1957 // on the other core, i.e. is equivalent to that core reading its 1958 // own DOORBELL_IN status. 1959 #define SIO_DOORBELL_OUT_CLR_OFFSET _u(0x00000184) 1960 #define SIO_DOORBELL_OUT_CLR_BITS _u(0x000000ff) 1961 #define SIO_DOORBELL_OUT_CLR_RESET _u(0x00000000) 1962 #define SIO_DOORBELL_OUT_CLR_MSB _u(7) 1963 #define SIO_DOORBELL_OUT_CLR_LSB _u(0) 1964 #define SIO_DOORBELL_OUT_CLR_ACCESS "WC" 1965 // ============================================================================= 1966 // Register : SIO_DOORBELL_IN_SET 1967 // Description : Write 1s to trigger doorbell interrupts on this core. Read to 1968 // get status of doorbells currently asserted on this core. 1969 #define SIO_DOORBELL_IN_SET_OFFSET _u(0x00000188) 1970 #define SIO_DOORBELL_IN_SET_BITS _u(0x000000ff) 1971 #define SIO_DOORBELL_IN_SET_RESET _u(0x00000000) 1972 #define SIO_DOORBELL_IN_SET_MSB _u(7) 1973 #define SIO_DOORBELL_IN_SET_LSB _u(0) 1974 #define SIO_DOORBELL_IN_SET_ACCESS "RW" 1975 // ============================================================================= 1976 // Register : SIO_DOORBELL_IN_CLR 1977 // Description : Check and acknowledge doorbells posted to this core. This 1978 // core's doorbell interrupt is asserted when any bit in this 1979 // register is 1. 1980 // 1981 // Write 1 to each bit to clear that bit. The doorbell interrupt 1982 // deasserts once all bits are cleared. Read to get status of 1983 // doorbells currently asserted on this core. 1984 #define SIO_DOORBELL_IN_CLR_OFFSET _u(0x0000018c) 1985 #define SIO_DOORBELL_IN_CLR_BITS _u(0x000000ff) 1986 #define SIO_DOORBELL_IN_CLR_RESET _u(0x00000000) 1987 #define SIO_DOORBELL_IN_CLR_MSB _u(7) 1988 #define SIO_DOORBELL_IN_CLR_LSB _u(0) 1989 #define SIO_DOORBELL_IN_CLR_ACCESS "WC" 1990 // ============================================================================= 1991 // Register : SIO_PERI_NONSEC 1992 // Description : Detach certain core-local peripherals from Secure SIO, and 1993 // attach them to Non-secure SIO, so that Non-secure software can 1994 // use them. Attempting to access one of these peripherals from 1995 // the Secure SIO when it is attached to the Non-secure SIO, or 1996 // vice versa, will generate a bus error. 1997 // 1998 // This register is per-core, and is only present on the Secure 1999 // SIO. 2000 // 2001 // Most SIO hardware is duplicated across the Secure and Non- 2002 // secure SIO, so is not listed in this register. 2003 #define SIO_PERI_NONSEC_OFFSET _u(0x00000190) 2004 #define SIO_PERI_NONSEC_BITS _u(0x00000023) 2005 #define SIO_PERI_NONSEC_RESET _u(0x00000000) 2006 // ----------------------------------------------------------------------------- 2007 // Field : SIO_PERI_NONSEC_TMDS 2008 // Description : IF 1, detach TMDS encoder (of this core) from the Secure SIO, 2009 // and attach to the Non-secure SIO. 2010 #define SIO_PERI_NONSEC_TMDS_RESET _u(0x0) 2011 #define SIO_PERI_NONSEC_TMDS_BITS _u(0x00000020) 2012 #define SIO_PERI_NONSEC_TMDS_MSB _u(5) 2013 #define SIO_PERI_NONSEC_TMDS_LSB _u(5) 2014 #define SIO_PERI_NONSEC_TMDS_ACCESS "RW" 2015 // ----------------------------------------------------------------------------- 2016 // Field : SIO_PERI_NONSEC_INTERP1 2017 // Description : If 1, detach interpolator 1 (of this core) from the Secure SIO, 2018 // and attach to the Non-secure SIO. 2019 #define SIO_PERI_NONSEC_INTERP1_RESET _u(0x0) 2020 #define SIO_PERI_NONSEC_INTERP1_BITS _u(0x00000002) 2021 #define SIO_PERI_NONSEC_INTERP1_MSB _u(1) 2022 #define SIO_PERI_NONSEC_INTERP1_LSB _u(1) 2023 #define SIO_PERI_NONSEC_INTERP1_ACCESS "RW" 2024 // ----------------------------------------------------------------------------- 2025 // Field : SIO_PERI_NONSEC_INTERP0 2026 // Description : If 1, detach interpolator 0 (of this core) from the Secure SIO, 2027 // and attach to the Non-secure SIO. 2028 #define SIO_PERI_NONSEC_INTERP0_RESET _u(0x0) 2029 #define SIO_PERI_NONSEC_INTERP0_BITS _u(0x00000001) 2030 #define SIO_PERI_NONSEC_INTERP0_MSB _u(0) 2031 #define SIO_PERI_NONSEC_INTERP0_LSB _u(0) 2032 #define SIO_PERI_NONSEC_INTERP0_ACCESS "RW" 2033 // ============================================================================= 2034 // Register : SIO_RISCV_SOFTIRQ 2035 // Description : Control the assertion of the standard software interrupt 2036 // (MIP.MSIP) on the RISC-V cores. 2037 // 2038 // Unlike the RISC-V timer, this interrupt is not routed to a 2039 // normal system-level interrupt line, so can not be used by the 2040 // Arm cores. 2041 // 2042 // It is safe for both cores to write to this register on the same 2043 // cycle. The set/clear effect is accumulated across both cores, 2044 // and then applied. If a flag is both set and cleared on the same 2045 // cycle, only the set takes effect. 2046 #define SIO_RISCV_SOFTIRQ_OFFSET _u(0x000001a0) 2047 #define SIO_RISCV_SOFTIRQ_BITS _u(0x00000303) 2048 #define SIO_RISCV_SOFTIRQ_RESET _u(0x00000000) 2049 // ----------------------------------------------------------------------------- 2050 // Field : SIO_RISCV_SOFTIRQ_CORE1_CLR 2051 // Description : Write 1 to atomically clear the core 1 software interrupt flag. 2052 // Read to get the status of this flag. 2053 #define SIO_RISCV_SOFTIRQ_CORE1_CLR_RESET _u(0x0) 2054 #define SIO_RISCV_SOFTIRQ_CORE1_CLR_BITS _u(0x00000200) 2055 #define SIO_RISCV_SOFTIRQ_CORE1_CLR_MSB _u(9) 2056 #define SIO_RISCV_SOFTIRQ_CORE1_CLR_LSB _u(9) 2057 #define SIO_RISCV_SOFTIRQ_CORE1_CLR_ACCESS "RW" 2058 // ----------------------------------------------------------------------------- 2059 // Field : SIO_RISCV_SOFTIRQ_CORE0_CLR 2060 // Description : Write 1 to atomically clear the core 0 software interrupt flag. 2061 // Read to get the status of this flag. 2062 #define SIO_RISCV_SOFTIRQ_CORE0_CLR_RESET _u(0x0) 2063 #define SIO_RISCV_SOFTIRQ_CORE0_CLR_BITS _u(0x00000100) 2064 #define SIO_RISCV_SOFTIRQ_CORE0_CLR_MSB _u(8) 2065 #define SIO_RISCV_SOFTIRQ_CORE0_CLR_LSB _u(8) 2066 #define SIO_RISCV_SOFTIRQ_CORE0_CLR_ACCESS "RW" 2067 // ----------------------------------------------------------------------------- 2068 // Field : SIO_RISCV_SOFTIRQ_CORE1_SET 2069 // Description : Write 1 to atomically set the core 1 software interrupt flag. 2070 // Read to get the status of this flag. 2071 #define SIO_RISCV_SOFTIRQ_CORE1_SET_RESET _u(0x0) 2072 #define SIO_RISCV_SOFTIRQ_CORE1_SET_BITS _u(0x00000002) 2073 #define SIO_RISCV_SOFTIRQ_CORE1_SET_MSB _u(1) 2074 #define SIO_RISCV_SOFTIRQ_CORE1_SET_LSB _u(1) 2075 #define SIO_RISCV_SOFTIRQ_CORE1_SET_ACCESS "RW" 2076 // ----------------------------------------------------------------------------- 2077 // Field : SIO_RISCV_SOFTIRQ_CORE0_SET 2078 // Description : Write 1 to atomically set the core 0 software interrupt flag. 2079 // Read to get the status of this flag. 2080 #define SIO_RISCV_SOFTIRQ_CORE0_SET_RESET _u(0x0) 2081 #define SIO_RISCV_SOFTIRQ_CORE0_SET_BITS _u(0x00000001) 2082 #define SIO_RISCV_SOFTIRQ_CORE0_SET_MSB _u(0) 2083 #define SIO_RISCV_SOFTIRQ_CORE0_SET_LSB _u(0) 2084 #define SIO_RISCV_SOFTIRQ_CORE0_SET_ACCESS "RW" 2085 // ============================================================================= 2086 // Register : SIO_MTIME_CTRL 2087 // Description : Control register for the RISC-V 64-bit Machine-mode timer. This 2088 // timer is only present in the Secure SIO, so is only accessible 2089 // to an Arm core in Secure mode or a RISC-V core in Machine mode. 2090 // 2091 // Note whilst this timer follows the RISC-V privileged 2092 // specification, it is equally usable by the Arm cores. The 2093 // interrupts are routed to normal system-level interrupt lines as 2094 // well as to the MIP.MTIP inputs on the RISC-V cores. 2095 #define SIO_MTIME_CTRL_OFFSET _u(0x000001a4) 2096 #define SIO_MTIME_CTRL_BITS _u(0x0000000f) 2097 #define SIO_MTIME_CTRL_RESET _u(0x0000000d) 2098 // ----------------------------------------------------------------------------- 2099 // Field : SIO_MTIME_CTRL_DBGPAUSE_CORE1 2100 // Description : If 1, the timer pauses when core 1 is in the debug halt state. 2101 #define SIO_MTIME_CTRL_DBGPAUSE_CORE1_RESET _u(0x1) 2102 #define SIO_MTIME_CTRL_DBGPAUSE_CORE1_BITS _u(0x00000008) 2103 #define SIO_MTIME_CTRL_DBGPAUSE_CORE1_MSB _u(3) 2104 #define SIO_MTIME_CTRL_DBGPAUSE_CORE1_LSB _u(3) 2105 #define SIO_MTIME_CTRL_DBGPAUSE_CORE1_ACCESS "RW" 2106 // ----------------------------------------------------------------------------- 2107 // Field : SIO_MTIME_CTRL_DBGPAUSE_CORE0 2108 // Description : If 1, the timer pauses when core 0 is in the debug halt state. 2109 #define SIO_MTIME_CTRL_DBGPAUSE_CORE0_RESET _u(0x1) 2110 #define SIO_MTIME_CTRL_DBGPAUSE_CORE0_BITS _u(0x00000004) 2111 #define SIO_MTIME_CTRL_DBGPAUSE_CORE0_MSB _u(2) 2112 #define SIO_MTIME_CTRL_DBGPAUSE_CORE0_LSB _u(2) 2113 #define SIO_MTIME_CTRL_DBGPAUSE_CORE0_ACCESS "RW" 2114 // ----------------------------------------------------------------------------- 2115 // Field : SIO_MTIME_CTRL_FULLSPEED 2116 // Description : If 1, increment the timer every cycle (i.e. run directly from 2117 // the system clock), rather than incrementing on the system-level 2118 // timer tick input. 2119 #define SIO_MTIME_CTRL_FULLSPEED_RESET _u(0x0) 2120 #define SIO_MTIME_CTRL_FULLSPEED_BITS _u(0x00000002) 2121 #define SIO_MTIME_CTRL_FULLSPEED_MSB _u(1) 2122 #define SIO_MTIME_CTRL_FULLSPEED_LSB _u(1) 2123 #define SIO_MTIME_CTRL_FULLSPEED_ACCESS "RW" 2124 // ----------------------------------------------------------------------------- 2125 // Field : SIO_MTIME_CTRL_EN 2126 // Description : Timer enable bit. When 0, the timer will not increment 2127 // automatically. 2128 #define SIO_MTIME_CTRL_EN_RESET _u(0x1) 2129 #define SIO_MTIME_CTRL_EN_BITS _u(0x00000001) 2130 #define SIO_MTIME_CTRL_EN_MSB _u(0) 2131 #define SIO_MTIME_CTRL_EN_LSB _u(0) 2132 #define SIO_MTIME_CTRL_EN_ACCESS "RW" 2133 // ============================================================================= 2134 // Register : SIO_MTIME 2135 // Description : Read/write access to the high half of RISC-V Machine-mode 2136 // timer. This register is shared between both cores. If both 2137 // cores write on the same cycle, core 1 takes precedence. 2138 #define SIO_MTIME_OFFSET _u(0x000001b0) 2139 #define SIO_MTIME_BITS _u(0xffffffff) 2140 #define SIO_MTIME_RESET _u(0x00000000) 2141 #define SIO_MTIME_MSB _u(31) 2142 #define SIO_MTIME_LSB _u(0) 2143 #define SIO_MTIME_ACCESS "RW" 2144 // ============================================================================= 2145 // Register : SIO_MTIMEH 2146 // Description : Read/write access to the high half of RISC-V Machine-mode 2147 // timer. This register is shared between both cores. If both 2148 // cores write on the same cycle, core 1 takes precedence. 2149 #define SIO_MTIMEH_OFFSET _u(0x000001b4) 2150 #define SIO_MTIMEH_BITS _u(0xffffffff) 2151 #define SIO_MTIMEH_RESET _u(0x00000000) 2152 #define SIO_MTIMEH_MSB _u(31) 2153 #define SIO_MTIMEH_LSB _u(0) 2154 #define SIO_MTIMEH_ACCESS "RW" 2155 // ============================================================================= 2156 // Register : SIO_MTIMECMP 2157 // Description : Low half of RISC-V Machine-mode timer comparator. This register 2158 // is core-local, i.e., each core gets a copy of this register, 2159 // with the comparison result routed to its own interrupt line. 2160 // 2161 // The timer interrupt is asserted whenever MTIME is greater than 2162 // or equal to MTIMECMP. This comparison is unsigned, and 2163 // performed on the full 64-bit values. 2164 #define SIO_MTIMECMP_OFFSET _u(0x000001b8) 2165 #define SIO_MTIMECMP_BITS _u(0xffffffff) 2166 #define SIO_MTIMECMP_RESET _u(0xffffffff) 2167 #define SIO_MTIMECMP_MSB _u(31) 2168 #define SIO_MTIMECMP_LSB _u(0) 2169 #define SIO_MTIMECMP_ACCESS "RW" 2170 // ============================================================================= 2171 // Register : SIO_MTIMECMPH 2172 // Description : High half of RISC-V Machine-mode timer comparator. This 2173 // register is core-local. 2174 // 2175 // The timer interrupt is asserted whenever MTIME is greater than 2176 // or equal to MTIMECMP. This comparison is unsigned, and 2177 // performed on the full 64-bit values. 2178 #define SIO_MTIMECMPH_OFFSET _u(0x000001bc) 2179 #define SIO_MTIMECMPH_BITS _u(0xffffffff) 2180 #define SIO_MTIMECMPH_RESET _u(0xffffffff) 2181 #define SIO_MTIMECMPH_MSB _u(31) 2182 #define SIO_MTIMECMPH_LSB _u(0) 2183 #define SIO_MTIMECMPH_ACCESS "RW" 2184 // ============================================================================= 2185 // Register : SIO_TMDS_CTRL 2186 // Description : Control register for TMDS encoder. 2187 #define SIO_TMDS_CTRL_OFFSET _u(0x000001c0) 2188 #define SIO_TMDS_CTRL_BITS _u(0x1f9fffff) 2189 #define SIO_TMDS_CTRL_RESET _u(0x00000000) 2190 // ----------------------------------------------------------------------------- 2191 // Field : SIO_TMDS_CTRL_CLEAR_BALANCE 2192 // Description : Clear the running DC balance state of the TMDS encoders. This 2193 // bit should be written once at the beginning of each scanline. 2194 #define SIO_TMDS_CTRL_CLEAR_BALANCE_RESET _u(0x0) 2195 #define SIO_TMDS_CTRL_CLEAR_BALANCE_BITS _u(0x10000000) 2196 #define SIO_TMDS_CTRL_CLEAR_BALANCE_MSB _u(28) 2197 #define SIO_TMDS_CTRL_CLEAR_BALANCE_LSB _u(28) 2198 #define SIO_TMDS_CTRL_CLEAR_BALANCE_ACCESS "SC" 2199 // ----------------------------------------------------------------------------- 2200 // Field : SIO_TMDS_CTRL_PIX2_NOSHIFT 2201 // Description : When encoding two pixels's worth of symbols in one cycle (a 2202 // read of a PEEK/POP_DOUBLE register), the second encoder sees a 2203 // shifted version of the colour data register. 2204 // 2205 // This control disables that shift, so that both encoder layers 2206 // see the same pixel data. This is used for pixel doubling. 2207 #define SIO_TMDS_CTRL_PIX2_NOSHIFT_RESET _u(0x0) 2208 #define SIO_TMDS_CTRL_PIX2_NOSHIFT_BITS _u(0x08000000) 2209 #define SIO_TMDS_CTRL_PIX2_NOSHIFT_MSB _u(27) 2210 #define SIO_TMDS_CTRL_PIX2_NOSHIFT_LSB _u(27) 2211 #define SIO_TMDS_CTRL_PIX2_NOSHIFT_ACCESS "RW" 2212 // ----------------------------------------------------------------------------- 2213 // Field : SIO_TMDS_CTRL_PIX_SHIFT 2214 // Description : Shift applied to the colour data register with each read of a 2215 // POP alias register. 2216 // 2217 // Reading from the POP_SINGLE register, or reading from the 2218 // POP_DOUBLE register with PIX2_NOSHIFT set (for pixel doubling), 2219 // shifts by the indicated amount. 2220 // 2221 // Reading from a POP_DOUBLE register when PIX2_NOSHIFT is clear 2222 // will shift by double the indicated amount. (Shift by 32 means 2223 // no shift.) 2224 // 0x0 -> Do not shift the colour data register. 2225 // 0x1 -> Shift the colour data register by 1 bit 2226 // 0x2 -> Shift the colour data register by 2 bits 2227 // 0x3 -> Shift the colour data register by 4 bits 2228 // 0x4 -> Shift the colour data register by 8 bits 2229 // 0x5 -> Shift the colour data register by 16 bits 2230 #define SIO_TMDS_CTRL_PIX_SHIFT_RESET _u(0x0) 2231 #define SIO_TMDS_CTRL_PIX_SHIFT_BITS _u(0x07000000) 2232 #define SIO_TMDS_CTRL_PIX_SHIFT_MSB _u(26) 2233 #define SIO_TMDS_CTRL_PIX_SHIFT_LSB _u(24) 2234 #define SIO_TMDS_CTRL_PIX_SHIFT_ACCESS "RW" 2235 #define SIO_TMDS_CTRL_PIX_SHIFT_VALUE_0 _u(0x0) 2236 #define SIO_TMDS_CTRL_PIX_SHIFT_VALUE_1 _u(0x1) 2237 #define SIO_TMDS_CTRL_PIX_SHIFT_VALUE_2 _u(0x2) 2238 #define SIO_TMDS_CTRL_PIX_SHIFT_VALUE_4 _u(0x3) 2239 #define SIO_TMDS_CTRL_PIX_SHIFT_VALUE_8 _u(0x4) 2240 #define SIO_TMDS_CTRL_PIX_SHIFT_VALUE_16 _u(0x5) 2241 // ----------------------------------------------------------------------------- 2242 // Field : SIO_TMDS_CTRL_INTERLEAVE 2243 // Description : Enable lane interleaving for reads of PEEK_SINGLE/POP_SINGLE. 2244 // 2245 // When interleaving is disabled, each of the 3 symbols appears as 2246 // a contiguous 10-bit field, with lane 0 being the least- 2247 // significant and starting at bit 0 of the register. 2248 // 2249 // When interleaving is enabled, the symbols are packed into 5 2250 // chunks of 3 lanes times 2 bits (30 bits total). Each chunk 2251 // contains two bits of a TMDS symbol per lane, with lane 0 being 2252 // the least significant. 2253 #define SIO_TMDS_CTRL_INTERLEAVE_RESET _u(0x0) 2254 #define SIO_TMDS_CTRL_INTERLEAVE_BITS _u(0x00800000) 2255 #define SIO_TMDS_CTRL_INTERLEAVE_MSB _u(23) 2256 #define SIO_TMDS_CTRL_INTERLEAVE_LSB _u(23) 2257 #define SIO_TMDS_CTRL_INTERLEAVE_ACCESS "RW" 2258 // ----------------------------------------------------------------------------- 2259 // Field : SIO_TMDS_CTRL_L2_NBITS 2260 // Description : Number of valid colour MSBs for lane 2 (1-8 bits, encoded as 0 2261 // through 7). Remaining LSBs are masked to 0 after the rotate. 2262 #define SIO_TMDS_CTRL_L2_NBITS_RESET _u(0x0) 2263 #define SIO_TMDS_CTRL_L2_NBITS_BITS _u(0x001c0000) 2264 #define SIO_TMDS_CTRL_L2_NBITS_MSB _u(20) 2265 #define SIO_TMDS_CTRL_L2_NBITS_LSB _u(18) 2266 #define SIO_TMDS_CTRL_L2_NBITS_ACCESS "RW" 2267 // ----------------------------------------------------------------------------- 2268 // Field : SIO_TMDS_CTRL_L1_NBITS 2269 // Description : Number of valid colour MSBs for lane 1 (1-8 bits, encoded as 0 2270 // through 7). Remaining LSBs are masked to 0 after the rotate. 2271 #define SIO_TMDS_CTRL_L1_NBITS_RESET _u(0x0) 2272 #define SIO_TMDS_CTRL_L1_NBITS_BITS _u(0x00038000) 2273 #define SIO_TMDS_CTRL_L1_NBITS_MSB _u(17) 2274 #define SIO_TMDS_CTRL_L1_NBITS_LSB _u(15) 2275 #define SIO_TMDS_CTRL_L1_NBITS_ACCESS "RW" 2276 // ----------------------------------------------------------------------------- 2277 // Field : SIO_TMDS_CTRL_L0_NBITS 2278 // Description : Number of valid colour MSBs for lane 0 (1-8 bits, encoded as 0 2279 // through 7). Remaining LSBs are masked to 0 after the rotate. 2280 #define SIO_TMDS_CTRL_L0_NBITS_RESET _u(0x0) 2281 #define SIO_TMDS_CTRL_L0_NBITS_BITS _u(0x00007000) 2282 #define SIO_TMDS_CTRL_L0_NBITS_MSB _u(14) 2283 #define SIO_TMDS_CTRL_L0_NBITS_LSB _u(12) 2284 #define SIO_TMDS_CTRL_L0_NBITS_ACCESS "RW" 2285 // ----------------------------------------------------------------------------- 2286 // Field : SIO_TMDS_CTRL_L2_ROT 2287 // Description : Right-rotate the 16 LSBs of the colour accumulator by 0-15 2288 // bits, in order to get the MSB of the lane 2 (red) colour data 2289 // aligned with the MSB of the 8-bit encoder input. 2290 // 2291 // For example, for RGB565 (red most significant), red is bits 2292 // 15:11, so should be right-rotated by 8 bits to align with bits 2293 // 7:3 of the encoder input. 2294 #define SIO_TMDS_CTRL_L2_ROT_RESET _u(0x0) 2295 #define SIO_TMDS_CTRL_L2_ROT_BITS _u(0x00000f00) 2296 #define SIO_TMDS_CTRL_L2_ROT_MSB _u(11) 2297 #define SIO_TMDS_CTRL_L2_ROT_LSB _u(8) 2298 #define SIO_TMDS_CTRL_L2_ROT_ACCESS "RW" 2299 // ----------------------------------------------------------------------------- 2300 // Field : SIO_TMDS_CTRL_L1_ROT 2301 // Description : Right-rotate the 16 LSBs of the colour accumulator by 0-15 2302 // bits, in order to get the MSB of the lane 1 (green) colour data 2303 // aligned with the MSB of the 8-bit encoder input. 2304 // 2305 // For example, for RGB565, green is bits 10:5, so should be 2306 // right-rotated by 3 bits to align with bits 7:2 of the encoder 2307 // input. 2308 #define SIO_TMDS_CTRL_L1_ROT_RESET _u(0x0) 2309 #define SIO_TMDS_CTRL_L1_ROT_BITS _u(0x000000f0) 2310 #define SIO_TMDS_CTRL_L1_ROT_MSB _u(7) 2311 #define SIO_TMDS_CTRL_L1_ROT_LSB _u(4) 2312 #define SIO_TMDS_CTRL_L1_ROT_ACCESS "RW" 2313 // ----------------------------------------------------------------------------- 2314 // Field : SIO_TMDS_CTRL_L0_ROT 2315 // Description : Right-rotate the 16 LSBs of the colour accumulator by 0-15 2316 // bits, in order to get the MSB of the lane 0 (blue) colour data 2317 // aligned with the MSB of the 8-bit encoder input. 2318 // 2319 // For example, for RGB565 (red most significant), blue is bits 2320 // 4:0, so should be right-rotated by 13 to align with bits 7:3 of 2321 // the encoder input. 2322 #define SIO_TMDS_CTRL_L0_ROT_RESET _u(0x0) 2323 #define SIO_TMDS_CTRL_L0_ROT_BITS _u(0x0000000f) 2324 #define SIO_TMDS_CTRL_L0_ROT_MSB _u(3) 2325 #define SIO_TMDS_CTRL_L0_ROT_LSB _u(0) 2326 #define SIO_TMDS_CTRL_L0_ROT_ACCESS "RW" 2327 // ============================================================================= 2328 // Register : SIO_TMDS_WDATA 2329 // Description : Write-only access to the TMDS colour data register. 2330 #define SIO_TMDS_WDATA_OFFSET _u(0x000001c4) 2331 #define SIO_TMDS_WDATA_BITS _u(0xffffffff) 2332 #define SIO_TMDS_WDATA_RESET _u(0x00000000) 2333 #define SIO_TMDS_WDATA_MSB _u(31) 2334 #define SIO_TMDS_WDATA_LSB _u(0) 2335 #define SIO_TMDS_WDATA_ACCESS "WO" 2336 // ============================================================================= 2337 // Register : SIO_TMDS_PEEK_SINGLE 2338 // Description : Get the encoding of one pixel's worth of colour data, packed 2339 // into a 32-bit value (3x10-bit symbols). 2340 // 2341 // The PEEK alias does not shift the colour register when read, 2342 // but still advances the running DC balance state of each 2343 // encoder. This is useful for pixel doubling. 2344 #define SIO_TMDS_PEEK_SINGLE_OFFSET _u(0x000001c8) 2345 #define SIO_TMDS_PEEK_SINGLE_BITS _u(0xffffffff) 2346 #define SIO_TMDS_PEEK_SINGLE_RESET _u(0x00000000) 2347 #define SIO_TMDS_PEEK_SINGLE_MSB _u(31) 2348 #define SIO_TMDS_PEEK_SINGLE_LSB _u(0) 2349 #define SIO_TMDS_PEEK_SINGLE_ACCESS "RF" 2350 // ============================================================================= 2351 // Register : SIO_TMDS_POP_SINGLE 2352 // Description : Get the encoding of one pixel's worth of colour data, packed 2353 // into a 32-bit value. The packing is 5 chunks of 3 lanes times 2 2354 // bits (30 bits total). Each chunk contains two bits of a TMDS 2355 // symbol per lane. This format is intended for shifting out with 2356 // the HSTX peripheral on RP2350. 2357 // 2358 // The POP alias shifts the colour register when read, as well as 2359 // advancing the running DC balance state of each encoder. 2360 #define SIO_TMDS_POP_SINGLE_OFFSET _u(0x000001cc) 2361 #define SIO_TMDS_POP_SINGLE_BITS _u(0xffffffff) 2362 #define SIO_TMDS_POP_SINGLE_RESET _u(0x00000000) 2363 #define SIO_TMDS_POP_SINGLE_MSB _u(31) 2364 #define SIO_TMDS_POP_SINGLE_LSB _u(0) 2365 #define SIO_TMDS_POP_SINGLE_ACCESS "RF" 2366 // ============================================================================= 2367 // Register : SIO_TMDS_PEEK_DOUBLE_L0 2368 // Description : Get lane 0 of the encoding of two pixels' worth of colour data. 2369 // Two 10-bit TMDS symbols are packed at the bottom of a 32-bit 2370 // word. 2371 // 2372 // The PEEK alias does not shift the colour register when read, 2373 // but still advances the lane 0 DC balance state. This is useful 2374 // if all 3 lanes' worth of encode are to be read at once, rather 2375 // than processing the entire scanline for one lane before moving 2376 // to the next lane. 2377 #define SIO_TMDS_PEEK_DOUBLE_L0_OFFSET _u(0x000001d0) 2378 #define SIO_TMDS_PEEK_DOUBLE_L0_BITS _u(0xffffffff) 2379 #define SIO_TMDS_PEEK_DOUBLE_L0_RESET _u(0x00000000) 2380 #define SIO_TMDS_PEEK_DOUBLE_L0_MSB _u(31) 2381 #define SIO_TMDS_PEEK_DOUBLE_L0_LSB _u(0) 2382 #define SIO_TMDS_PEEK_DOUBLE_L0_ACCESS "RF" 2383 // ============================================================================= 2384 // Register : SIO_TMDS_POP_DOUBLE_L0 2385 // Description : Get lane 0 of the encoding of two pixels' worth of colour data. 2386 // Two 10-bit TMDS symbols are packed at the bottom of a 32-bit 2387 // word. 2388 // 2389 // The POP alias shifts the colour register when read, according 2390 // to the values of PIX_SHIFT and PIX2_NOSHIFT. 2391 #define SIO_TMDS_POP_DOUBLE_L0_OFFSET _u(0x000001d4) 2392 #define SIO_TMDS_POP_DOUBLE_L0_BITS _u(0xffffffff) 2393 #define SIO_TMDS_POP_DOUBLE_L0_RESET _u(0x00000000) 2394 #define SIO_TMDS_POP_DOUBLE_L0_MSB _u(31) 2395 #define SIO_TMDS_POP_DOUBLE_L0_LSB _u(0) 2396 #define SIO_TMDS_POP_DOUBLE_L0_ACCESS "RF" 2397 // ============================================================================= 2398 // Register : SIO_TMDS_PEEK_DOUBLE_L1 2399 // Description : Get lane 1 of the encoding of two pixels' worth of colour data. 2400 // Two 10-bit TMDS symbols are packed at the bottom of a 32-bit 2401 // word. 2402 // 2403 // The PEEK alias does not shift the colour register when read, 2404 // but still advances the lane 1 DC balance state. This is useful 2405 // if all 3 lanes' worth of encode are to be read at once, rather 2406 // than processing the entire scanline for one lane before moving 2407 // to the next lane. 2408 #define SIO_TMDS_PEEK_DOUBLE_L1_OFFSET _u(0x000001d8) 2409 #define SIO_TMDS_PEEK_DOUBLE_L1_BITS _u(0xffffffff) 2410 #define SIO_TMDS_PEEK_DOUBLE_L1_RESET _u(0x00000000) 2411 #define SIO_TMDS_PEEK_DOUBLE_L1_MSB _u(31) 2412 #define SIO_TMDS_PEEK_DOUBLE_L1_LSB _u(0) 2413 #define SIO_TMDS_PEEK_DOUBLE_L1_ACCESS "RF" 2414 // ============================================================================= 2415 // Register : SIO_TMDS_POP_DOUBLE_L1 2416 // Description : Get lane 1 of the encoding of two pixels' worth of colour data. 2417 // Two 10-bit TMDS symbols are packed at the bottom of a 32-bit 2418 // word. 2419 // 2420 // The POP alias shifts the colour register when read, according 2421 // to the values of PIX_SHIFT and PIX2_NOSHIFT. 2422 #define SIO_TMDS_POP_DOUBLE_L1_OFFSET _u(0x000001dc) 2423 #define SIO_TMDS_POP_DOUBLE_L1_BITS _u(0xffffffff) 2424 #define SIO_TMDS_POP_DOUBLE_L1_RESET _u(0x00000000) 2425 #define SIO_TMDS_POP_DOUBLE_L1_MSB _u(31) 2426 #define SIO_TMDS_POP_DOUBLE_L1_LSB _u(0) 2427 #define SIO_TMDS_POP_DOUBLE_L1_ACCESS "RF" 2428 // ============================================================================= 2429 // Register : SIO_TMDS_PEEK_DOUBLE_L2 2430 // Description : Get lane 2 of the encoding of two pixels' worth of colour data. 2431 // Two 10-bit TMDS symbols are packed at the bottom of a 32-bit 2432 // word. 2433 // 2434 // The PEEK alias does not shift the colour register when read, 2435 // but still advances the lane 2 DC balance state. This is useful 2436 // if all 3 lanes' worth of encode are to be read at once, rather 2437 // than processing the entire scanline for one lane before moving 2438 // to the next lane. 2439 #define SIO_TMDS_PEEK_DOUBLE_L2_OFFSET _u(0x000001e0) 2440 #define SIO_TMDS_PEEK_DOUBLE_L2_BITS _u(0xffffffff) 2441 #define SIO_TMDS_PEEK_DOUBLE_L2_RESET _u(0x00000000) 2442 #define SIO_TMDS_PEEK_DOUBLE_L2_MSB _u(31) 2443 #define SIO_TMDS_PEEK_DOUBLE_L2_LSB _u(0) 2444 #define SIO_TMDS_PEEK_DOUBLE_L2_ACCESS "RF" 2445 // ============================================================================= 2446 // Register : SIO_TMDS_POP_DOUBLE_L2 2447 // Description : Get lane 2 of the encoding of two pixels' worth of colour data. 2448 // Two 10-bit TMDS symbols are packed at the bottom of a 32-bit 2449 // word. 2450 // 2451 // The POP alias shifts the colour register when read, according 2452 // to the values of PIX_SHIFT and PIX2_NOSHIFT. 2453 #define SIO_TMDS_POP_DOUBLE_L2_OFFSET _u(0x000001e4) 2454 #define SIO_TMDS_POP_DOUBLE_L2_BITS _u(0xffffffff) 2455 #define SIO_TMDS_POP_DOUBLE_L2_RESET _u(0x00000000) 2456 #define SIO_TMDS_POP_DOUBLE_L2_MSB _u(31) 2457 #define SIO_TMDS_POP_DOUBLE_L2_LSB _u(0) 2458 #define SIO_TMDS_POP_DOUBLE_L2_ACCESS "RF" 2459 // ============================================================================= 2460 #endif // _HARDWARE_REGS_SIO_H 2461 2462