1cpu: CPU.CortexM @ sysbus 2 cpuType: "cortex-m4f" 3 nvic: nvic 4 5nvic: IRQControllers.NVIC @ sysbus 0xE000E000 6 -> cpu@0 7 8dwt: Miscellaneous.DWT @ sysbus 0xE0001000 9 frequency: 72000000 10 11rom: Memory.MappedMemory @ sysbus 0x00000000 12 size: 0x10000 13 14code_ram: Memory.MappedMemory @ { 15 sysbus 0x10058000; 16 sysbus 0x20058000 17 } 18 size: 0x68000 19 20data_ram: Memory.MappedMemory @ { 21 sysbus 0x200C0000; 22 sysbus 0x100C0000 23 } 24 size: 0x17800 25 26battery_backed_ram: Memory.MappedMemory @ sysbus 0x400AF000 27 // Size should be 0x40 28 size: 0x400 29 30internal_flash: Memory.MappedMemory @ sysbus 0x64000000 31 size: 0x100000 32 33nvicIrq33: Miscellaneous.CombinedInput @ none 34 numberOfInputs: 2 35 -> nvic@33 36 37nvicIrq32: Miscellaneous.CombinedInput @ none 38 numberOfInputs: 2 39 -> nvic@32 40 41nvicIrq38: Miscellaneous.CombinedInput @ none 42 numberOfInputs: 2 43 -> nvic@38 44 45nvicIrq39: Miscellaneous.CombinedInput @ none 46 numberOfInputs: 2 47 -> nvic@39 48 49cr_uart1: UART.NPCX_UART @ sysbus 0x400E0000 50 IRQ -> nvicIrq33@0 51 DMAReceive -> mdma1@0 52 53cr_uart2: UART.NPCX_UART @ sysbus 0x400E2000 54 IRQ -> nvicIrq32@0 55 DMAReceive -> mdma2@0 56 57cr_uart3: UART.NPCX_UART @ sysbus 0x400E4000 58 IRQ -> nvicIrq38@0 59 DMAReceive -> mdma3@0 60 61cr_uart4: UART.NPCX_UART @ sysbus 0x400E6000 62 IRQ -> nvicIrq39@0 63 DMAReceive -> mdma4@0 64 65itim32_1: Timers.NPCX_ITIM @ sysbus 0x400B0000 66 -> nvic@28 67 68itim32_2: Timers.NPCX_ITIM @ sysbus 0x400B2000 69 -> nvic@27 70 71itim32_3: Timers.NPCX_ITIM @ sysbus 0x400B4000 72 -> nvic@17 73 74itim32_4: Timers.NPCX_ITIM @ sysbus 0x400B6000 75 -> nvic@43 76 77itim32_5: Timers.NPCX_ITIM @ sysbus 0x400B8000 78 -> nvic@44 79 80itim32_6: Timers.NPCX_ITIM @ sysbus 0x400BA000 81 -> nvic@45 82 83itim64: Timers.NPCX_ITIM @ sysbus 0x400BE000 84 is64Bit: true 85 -> nvic@58 86 87image_type: Memory.ArrayMemory @ sysbus 0x4000C009 88 size: 0x1 89 90twd: Timers.NPCX_TWD @ sysbus 0x400D8000 91 -> nvic@31 92 93mtc: Timers.NPCX_MTC @ sysbus 0x400B7000 94 -> nvic@5 95 96mdma1: DMA.NPCX_MDMA @ sysbus 0x40011100 97 sourceAddress: 0x400E0002 98 destinationAddress: 0x400E0000 99 -> nvicIrq33@1 100 101mdma2: DMA.NPCX_MDMA @ sysbus 0x40011200 102 sourceAddress: 0x400E2002 103 destinationAddress: 0x400E2000 104 -> nvicIrq32@1 105 106mdma3: DMA.NPCX_MDMA @ sysbus 0x40011300 107 sourceAddress: 0x400E4002 108 destinationAddress: 0x400E4000 109 -> nvicIrq38@1 110 111mdma4: DMA.NPCX_MDMA @ sysbus 0x40011400 112 sourceAddress: 0x400E6002 113 destinationAddress: 0x400E6000 114 -> nvicIrq39@1 115 116mdma5: DMA.NPCX_MDMA @ sysbus 0x40011500 117 // For MDMA5 the source and destination addresses can be different 118 // based on the state of `I3C_MS` flag in the `DEV_CTL3` register 119 // of the System Configuration peripheral. 120 // This is currently not implemented. 121 sourceAddress: 0x400E00C0 122 destinationAddress: 0x400E00B0 123 124spip: SPI.NPCX_SPIP @ sysbus 0x400D2000 125 126lfcg: Miscellaneous.NPCX_LFCG @ sysbus 0x400B5100 127 128hfcg: Miscellaneous.NPCX_HFCG @ sysbus 0x400B5000 129 130fiu: SPI.NPCX_FIU @ sysbus 0x40020000 131 132internal_flash_controller: SPI.NPCX_Flash @ fiu 133 memory: internal_flash 134 135gpio0: GPIOPort.NPCX_GPIO @ sysbus 0x40081000 136 137gpio1: GPIOPort.NPCX_GPIO @ sysbus 0x40083000 138 139gpio2: GPIOPort.NPCX_GPIO @ sysbus 0x40085000 140 141gpio3: GPIOPort.NPCX_GPIO @ sysbus 0x40087000 142 143gpio4: GPIOPort.NPCX_GPIO @ sysbus 0x40089000 144 145gpio5: GPIOPort.NPCX_GPIO @ sysbus 0x4008B000 146 147gpio6: GPIOPort.NPCX_GPIO @ sysbus 0x4008D000 148 149gpio7: GPIOPort.NPCX_GPIO @ sysbus 0x4008F000 150 151gpio8: GPIOPort.NPCX_GPIO @ sysbus 0x40091000 152 153gpio9: GPIOPort.NPCX_GPIO @ sysbus 0x40093000 154 155gpioa: GPIOPort.NPCX_GPIO @ sysbus 0x40095000 156 157gpiob: GPIOPort.NPCX_GPIO @ sysbus 0x40097000 158 159gpioc: GPIOPort.NPCX_GPIO @ sysbus 0x40099000 160 161gpiod: GPIOPort.NPCX_GPIO @ sysbus 0x4009B000 162 163gpioe: GPIOPort.NPCX_GPIO @ sysbus 0x4009D000 164 165gpiof: GPIOPort.NPCX_GPIO @ sysbus 0x4009F000 166 167smbus0: I2C.NPCX_SMBus @ sysbus 0x40009000 168 IRQ -> nvic@13 169 170smbus1: I2C.NPCX_SMBus @ sysbus 0x4000B000 171 IRQ -> nvic@14 172 173smbus2: I2C.NPCX_SMBus @ sysbus 0x400C0000 174 IRQ -> nvic@36 175 176smbus3: I2C.NPCX_SMBus @ sysbus 0x400C2000 177 IRQ -> nvic@37 178 179smbus4: I2C.NPCX_SMBus @ sysbus 0x40008000 180 IRQ -> nvic@19 181 182smbus5: I2C.NPCX_SMBus @ sysbus 0x40017000 183 IRQ -> nvic@20 184 185smbus6: I2C.NPCX_SMBus @ sysbus 0x40018000 186 IRQ -> nvic@16 187 188smbus7: I2C.NPCX_SMBus @ sysbus 0x40019000 189 IRQ -> nvic@8 190 191// DEV_CTL4 register from the System Configuration peripheral 192// Its `Write-Protect Internal Flash` bit is used to force 193// write protection of the internal flash 194DEV_CTL4: Python.PythonPeripheral @ sysbus 0x400C3006 195 size: 0x1 196 initable: true 197 script: ''' 198if request.isInit: 199 value = 0xA 200 is_locked = False 201 WRITE_PROTECTION = (1 << 5) 202 203elif request.isRead: 204 request.value = value 205 206elif request.isWrite: 207 if is_locked: 208 request.value |= WRITE_PROTECTION 209 elif request.value & WRITE_PROTECTION: 210 is_locked = True 211 # This signal (WP) is active-low 212 self.GetMachine()["sysbus.fiu.internal_flash_controller"].OnGPIO(0, False) 213 value = request.value 214 215 value = request.value 216''' 217 218// SWRST_CTL4 register from the System Configuration peripheral 219SWRST_CTL4: Python.PythonPeripheral @ sysbus 0x400C3110 220 size: 0x4 221 initable: true 222 script: ''' 223if request.isInit: 224 MDMA2_RESET = (1 << 25) 225elif request.isWrite: 226 if request.value & MDMA2_RESET: 227 self.GetMachine()["sysbus.mdma2"].Reset() 228''' 229 230// Mocking "Power Management Channel (PMCH) device registers", as RW memory 231pm1: Memory.ArrayMemory @ sysbus 0x400C9000 232 size: 0x100 233 234pm2: Memory.ArrayMemory @ sysbus 0x400CB000 235 size: 0x100 236 237pm3: Memory.ArrayMemory @ sysbus 0x400CD000 238 size: 0x100 239 240pm4: Memory.ArrayMemory @ sysbus 0x400CF000 241 size: 0x100 242 243sysbus: 244 init: 245 // Script contains implementation for select bootrom functions 246 // that on hardware would be present in board's read-only memory 247 Machine ExecutePythonFromFile @scripts/pydev/nuvoton_npcx9_bootrom.py 248 249 Tag <0x400C3000 0x400> "System Configuration" 250 Tag <0x400C3100 0x2> "SWRST_TRG" 0xFFFF 251 Tag <0x400F8000 0x400> "FLM" 252 Tag <0x40011000 0x100> "GDMA" 253 Tag <0x400BB000 0x100> "MIWU0" 254 Tag <0x400BD000 0x100> "MIWU1" 255 Tag <0x400BF000 0x100> "MIWU2" 256 Tag <0x400A3000 0x100> "Keyboard scan" 257 Tag <0x400A5000 0x100> "System Glue Functions" 258 Tag <0x400B1000 0x100> "PS/2" 259 Tag <0x400E1000 0x100> "MTF16-1" 260 Tag <0x400E3000 0x100> "MTF16-2" 261 Tag <0x400E5000 0x100> "MTF16-3" 262 Tag <0x400D7000 0x100> "LTC" 263 Tag <0x40080000 0x100> "PWM0" 264 Tag <0x40082000 0x100> "PWM1" 265 Tag <0x40084000 0x100> "PWM2" 266 Tag <0x40086000 0x100> "PWM3" 267 Tag <0x40088000 0x100> "PWM4" 268 Tag <0x4008A000 0x100> "PWM5" 269 Tag <0x4008C000 0x100> "PWM6" 270 Tag <0x4008E000 0x100> "PWM7" 271 Tag <0x400D1000 0x100> "ADC" 272 Tag <0x40009000 0x100> "SMBUS0" 273 Tag <0x4000B000 0x100> "SMBUS1" 274 Tag <0x400C0000 0x100> "SMBUS2" 275 Tag <0x400C2000 0x100> "SMBUS3" 276 Tag <0x40008000 0x100> "SMBUS4" 277 Tag <0x40017000 0x100> "SMBUS5" 278 Tag <0x40018000 0x100> "SMBUS6" 279 Tag <0x40019000 0x100> "SMBUS7" 280 Tag <0x400D4000 0x100> "PECI" 281 Tag <0x4000F000 0x200> "SHI" 282 Tag <0x400AF100 0x100> "BBRM" 283 Tag <0x4000C000 0x100> "MDC" 284 Tag <0x40007000 0x100> "OTPI" 285 Tag <0x4000D000 0x100> "PMC" 286 Tag <0x400C3000 0x100> "Debugger Interface" 287 Tag <0x400C7000 0x100> "Keyboard and Mouse Interface" 288 Tag <0x400C9000 0x100> "PM1" 289 Tag <0x400CB000 0x100> "PM2" 290 Tag <0x400CD000 0x100> "PM3" 291 Tag <0x400CF000 0x100> "PM4" 292 Tag <0x4000E000 0x100> "Host Modules" 293 Tag <0x40010000 0x80> "SHM" 294 Tag <0x40010080 0x80> "eSHM" 295 Tag <0x400C1000 0x100> "MSWC" 296 Tag <0x4000A000 0x100> "eSPI_SIF" 297